C语言中变量a=0与a==0的区别

Python011

C语言中变量a=0与a==0的区别,第1张

int a, b, c

//赋值

a = 0 //令a为0,赋值的原则是从右向左

//以下赋值是正确的的:将a+1的结果赋给b

b = a + 1

//以下赋值是错误的: 试图将b的值赋给表达式c+1。在C语言中,这是不允许的,只能赋值给变量,而不能赋值给表达式

c + 1 = b

// == 是比较符,被视作一个符号,判断左右两边是不是相等

/*条件判断: 如果a等于0,则输出a的值。这里不同于赋值,而是将a的值与0作判断,返回一个bool结果。即:如果a的值为0,即a == 0为真,则返回真(布尔值为1),反之如果a == 0为假,则返回假(布尔值为0)。if条件判断语句根据返回的是1还是0来决定是否执行下面的语句,如果为1(真),则执行cout<<a<<endl如果为0(假)则不执行。*/

if (a == 0)

cout<<a<<endl

/*类似的,== 还可以用于while(a == 0)) 这样的语句中,和if条件十分类似。*/

/*与赋值不同,比较符 == 既可以用于判断变量(如a == 0),也可以判断表达式(如 a + b == c + 1)等。*/

一个字符常量只能含有一个字符,而'a=0'由三个字符构成,因而它不是字符常量。不过实际上,'a=0'是一个多字符字符常量(multi-character character constant),它属于unspecified behavior,因此通常不作讨论,认为它是错的就可以了。

赋值号的左边必须是一个左值,a+1是一个右值,因而不能放在赋值号的左边。

a+=a+1相当于a=a+(a+1),计算2a+1的值,并赋值给a。