论坛风格切换切换到宽版
  • 3828阅读
  • 11回复

a=0 的 a==0 区别。 [复制链接]

上一主题 下一主题
离线elecele
 
发帖
894
只看楼主 倒序阅读 0楼 发表于: 2007-05-05
在mplab ide v7.22   挂picc,
误将a=0;
写成a==0;
结果程序混乱,不知 a==0 怎么编译的。
离线BG4XCR
发帖
33381
只看该作者 1楼 发表于: 2007-05-05
a=0 是说把0赋给a。。使a等于0。
a==0 正好相反。 是说0等于a。

= 和==的结合性相反。。
离线elecele
发帖
894
只看该作者 2楼 发表于: 2007-05-05
语句 a==0 编译是可以通过的,就是没有想要的结果。
还是不明白,如果不在判断的条件里出现怎么编译。
离线小比尔/5
发帖
2582
只看该作者 3楼 发表于: 2007-05-05
a==0相当于判断a是否等于0,如果a等于0就返回1,如果a不等于0就返回0
a=0相当于给a赋值0,当执行这个语句后,不管a原来是什么值,都会变为0
如果if(a=0) {...},那么判断的结果是恒假的,这句话就相当于
a=0
if(0) {...}
反之,if(a=1或者其它值) {...},判断的结果是恒真的
相当于
a=1
if(1) {...}
此时,if语句就失去了判断的作用。
离线BG2VO
发帖
5764
只看该作者 4楼 发表于: 2007-05-06
楼上,标准的c语言。;)
c语言就这个符号用的不算太好,要是有单符号就好了,否则容易误解。另外,不等号是 !=
离线bg2du
发帖
1512
只看该作者 5楼 发表于: 2007-05-06
如果你的a没有初始化过,然后你把“a=0;”,写成"a==0",那么a保持原来的值不变,而c语言中的初始值是随机的,即a是一个不可预测的值(可能为0也可能为其它值)。
离线elecele
发帖
894
只看该作者 6楼 发表于: 2007-05-06
多谢大家的回复,bg2du好久前转给你的卡片收到没有?
离线小比尔/5
发帖
2582
只看该作者 7楼 发表于: 2007-05-06
'
楼上,标准的c语言。;)
'
高校计算机二级考试逼出来的
有的题目就在这个问题上纠缠,看来还是有用的。 :d
还有,我的语句后面忘了写分号,嘿嘿~我们老师强调了n++遍了
离线albert
发帖
4807
只看该作者 8楼 发表于: 2007-05-15
'
楼上,标准的c语言。;)
c语言就这个符号用的不算太好,要是有单符号就好了,否则容易误解。另外,不等号是 !=
'
bt点的公司比如hw,代码风格通常是
if (0==i) {
}
离线Apple
发帖
759
只看该作者 9楼 发表于: 2007-05-15
'
bt点的公司比如hw,代码风格通常是
if (0==i) {
}
'

据说消耗的指令数是不一样的。
离线littleworm
发帖
3185
只看该作者 10楼 发表于: 2007-05-19
'
bt点的公司比如hw,代码风格通常是
if (0==i) {
}
'


呵呵 一个是赋值语句 一个是比较语句 完全不一样的咚咚哦

albert 说的对 0==i 这个写法是比较好的写法 因为这样写可以完全避免这种比较语句上的错误 代码量很打的时候 如果写成if (i==0) { }   然后程序出错了 再回来找 很难的找出来的 但是 如果写成 if (0==i) { } 那么再编译上就不能通过 因为0不能被一个值赋值 0不是一个左值 呵呵

所以说 这样是一个比较好的编程习惯 并不能说这样写是变态 印度那边的程序员都具备这样良好的编程风格 呵呵 华为很多产品都是用c写 这么多年来 已经形成了良好的风格 呵呵
离线BG2AFC
发帖
329
只看该作者 11楼 发表于: 2007-05-24
=就是等于
==就是不等于