zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

C语言 运算符 不要 等于 3.5 解惑
2023-09-11 14:19:12 时间

本节书摘来自华章出版社《C语言解惑》一 书中的第3章,第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


c语言 数组名和下标运算符 前面我们稍微提过数组的属性:数组名就是首元素的首地址,即 &a[0]==a; 则:int *p = 也可写成 int *p = a ; 两者一摸一样,平时都是用第二种,因为写起来比较方便。
C语言运算符——自增与自减 自增与自减 一个整数类型的变量自身加 1 可以这样写: a = a + 1;或者a += 1;不过,C语言还支持另外一种更加简洁的写法,就是:a++;或者++a;这种写法叫做自加或自增,意思很明确,就是每次自身加 1。 相应的,也有a–和--a,它们叫做自减,表示自身减 1。++和–分别称为自增运算符和自减运算符,它们在循环结构中使用很频繁。