《C语言解惑》—— 3.5 不要用错等于运算符

3.5 不要用错等于运算符

【例3.9】下面程序正确吗?

#include <stdio.h>
void main ( )
{
         char ch,c='H';
         char st[3],s[]="Hellow";
         ch=c;
         st=s;
         printf("%c,%s\n",ch,st);
}

编译给出:
error C2106: '=' : left operand must be l-value
字符有“=”运算符,但字符串没有,所以语句“st=s;”不正确。解决的办法是使用strcpy函数,使用时包含定义它的头文件string.h即可。
【例3.10】使用strcpy函数的例子。

#include <stdio.h>
#include <string.h>
void main ( )
{
         char ch,c='H';
         char st[3],s[]="Hellow";
         ch=c;
         strcpy(st,s);
         printf("%c,%s\n",ch,st);
}

输出结果为:
H, Hellow

意 不要混淆数学运算符“=”和比较运算符“==”。

【例3.11】想在下面的程序中得到的输出是“5不等于6”,能实现吗?

#include <stdio.h>
void main ( )
{
   ? int a=5, b=6;
   ? if(a=b)
            ?printf("%d等于%d\n",a,b);
   ? else     printf("%d不等于%d\n",a,b);
}

这里将比较运算符“==”错认为赋值运算符“=”。因为“a=b”使用等于运算符,所以使a的值为6。也就是if的表达式为6而不是0,根据if(6)不为0的条件,应执行else后面的语句,输出结果为“6不等于6”,这显然是错误的。
将if表达式改为
if(a==b)
则输出结果为:
5不等于6

时间: 2024-10-13 15:54:40

《C语言解惑》—— 3.5 不要用错等于运算符的相关文章

《C语言解惑》—— 导读

前 言 C语言编程仍然是编程工作者必备的技能.目前有四类典型的学习C语言的教材:第一类是以讲授语法为主线,即流行的教科书方式,所涉及的例题均以正确的程序为主:第二类是以案例教学为主的教材,摆脱了语法的部分约束:第三类是以讲解编程技术为主的经验之作,主要针对已有编程基础的读者:第四类是针对编程容易产生错误的专题,对比正确与错误的程序以提高编程能力,涉及的内容比较专业.这些教材各有千秋,其共同的目的都是想教会读者如何编写正确.规范的程序.我们也曾在两部教材的每一章中尝试增加一节错误分析的内容,以期让

《C语言解惑》—— 第一篇 C语言编程中的对与错

第一篇 C语言编程中的对与错 本篇主要采用分析编程中存在的典型错误.对比正确与错误程序的方法,使读者加深印象并提高分辨语法对错及编程的能力,进而达到尽快掌握C语言编程基础知识的目的.

《C语言解惑》一导读

前言 C语言解惑 C语言并不大--如果以参考手册的篇幅作为衡量标准的话,C语言甚至可以归为一种"小"语言.不过,这种"小"并不意味着C语言的功能不够强大,而是说明了C语言里的限制性规则比较少.C语言本身的设计非常简洁精妙,这一点相信C语言的使用者早已有所体会. 不过,C语言的这种精妙对C语言的初学者来说,似乎是故作神秘.因为限制较少,C语言可以写成内容丰富的表达式,这可能会被初学者认为是输出错误.C语言的紧凑性允许以简洁凝炼的方式实现常见的编程任务. 学用C语言的过

c语言数组指针,不报错,就停止工作,请问哪里错了

问题描述 c语言数组指针,不报错,就停止工作,请问哪里错了 第一次提问,多包含,也不报错,为什么一运行就按停止工作报错 #include #include #include struct arr { int *pbase;//第一个元素的首地址 int len;//数组所能容纳的最大元素个数 int cnt;//当前数组有效元素个数 }; void init_arr(struct arr *p1,int length) { (p1->pbase) = (int *)malloc(sizeof(i

《C语言解惑》一第1章 操作符1.1 基本算术操作符

第1章 操作符 C语言解惑 C语言程序由语句构成,而语句由表达式构成,表达式又由操作符和操作数构成.C语言中的操作符非常丰富--本书的附录B所给出的操作符汇总表就是最好的证据.正是因为这种丰富性,为操作符确定操作数的规则就成为了我们理解C语言表达式的核心和关键.那些规则--即所谓的"优先级"和"关联性"--汇总在本书附录A的操作符优先级表里.请使用该表格来解答本章中的谜题. 谜题1.1 基本算术操作符 请问,下面这个程序的输出是什么? main() { int x;

在linux系统下R语言安装包,总是报错

问题描述 在linux系统下R语言安装包,总是报错 我使用的是单位的服务器linux系统上的R,那么我想要加载R包的时候是不是没有权限? 因为我安装时总是有关于error: https:// URLs are not supported,是不是我应该安装到我自己的某个(我不知道应该哪个)目录下? 解决方案 R语言的各种报错及其解决方法R语言_安装包

《C++语言入门经典》一2.4 运算符

2.4 运算符 运算符就是具有运算功能的符号.C++语言中有丰富的运算符,其中有很多都是从C语言 继承下来的,它新增的运算符有作用域运算符(::),成员指针运算符(->). 和C语言一样,根据使用运算符的对象个数,C++语言中可以将运算符分为单目运算符. 双目运算符和三目运算符.根据使用运算符的对象之间的关系,可以将运算符分为算术运算 符.关系运算符.逻辑运算符.赋值运算符.位运算符.移位运算符.sizeof 运算符.条件运 算符和逗号运算符. 2.4.1 算术运算符 算术运算主要是指常用的加(

《C语言解惑》—— 1.2 象形字体扰乱视听

1.2 象形字体扰乱视听 要特别注意形状相近的字母,最典型的是小写字母"l"和数字"1".以下面的程序为例. [例1.1]演示混淆字母"l"和数字"1"的错误程序. #include <stdio.h> void main() { double x=0; printf("输入x:"); scanf("%1f",&x); printf("输出x:%f\n&qu

《C语言解惑》—— 1.8 老大就是要在最前面

1.8 老大就是要在最前面 [例1.5]分析下面的程序错在哪里. #include <stdio.h> void main() { printf("输入n:"); int n; scanf("%d",&n); printf("%d\n",n); } 必须先声明变量n.C语言的变量声明必须在所有可执行语句之前,变量是老大,一定要在最前面.一定要牢记:变量必须先声明后使用.