且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-10-01 14:55:24

本节书摘来自华章出版社《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