if(a==0)和if(0==a)

DuBin11 2008-11-10 01:05:48
if(a==0)和if(0==a),为什么推荐后一种写法
...全文
720 64 打赏 收藏 转发到动态 举报
写回复
用AI写文章
64 条回复
切换为时间正序
请发表友善的回复…
发表回复
changhairen 2008-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xhs_lh04 的回复:]
这是为了避免出现以下错误
if (a=0)
如果写成if (0=a)
在编译就会报错
[/Quote]


建议看看林锐的 高质量C
LaPizza 2008-11-23
  • 打赏
  • 举报
回复
防止写错成 a=0 而仍会被编译器接受的情况
tunnel115 2008-11-22
  • 打赏
  • 举报
回复
同意2楼的说法
wgq2633 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 rcbblgy 的回复:]
看孙鑫教程了解到过。。。。
[/Quote]
同意

if( MB_OK==MessageBox(……) )……
leank 2008-11-22
  • 打赏
  • 举报
回复
养成良好的习惯,对于程序员来说很重要。
lily2005lucky 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 zzkk_200 的回复:]
这是一个习惯问题,对于初学者尽量采用0==a 可以避免不必要的错误。
学习了
jiangfeng999 2008-11-22
  • 打赏
  • 举报
回复
学习了
yankehong_no1 2008-11-22
  • 打赏
  • 举报
回复
学习了!
Just4life 2008-11-22
  • 打赏
  • 举报
回复
就是让你避免在调用时出现if( a = 0 )得情况
zhongyuanceshi 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mifeixq 的回复:]
是这样的

因为写代码的时候 == 容易写成 =
就是
if(a == 1)
...

容易写成
if(a=1)
...
这样的错误在大量代码中不容易被发现,比较讨厌
如果写成
if(1==a)这么写的话,如果写错了
if(1=a)编译器会报告错误,因为 1是右值,不能在 = 左面出现
[/Quote]

不能将一个变量值赋给常量,若是这样,编译报错。避免这样的错误在大量代码中不容易被发现
Greg_han 2008-11-21
  • 打赏
  • 举报
回复
可以避免出现以下人为的错误
if (a=0)
如果写成if (0=a)
在编译就会报错
Bemused 2008-11-21
  • 打赏
  • 举报
回复
学习了!
Darkneece 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 zsjin0208 的回复:]
我们老师明确禁止我们用第二种方法,第二种方法带来理解上的麻烦,写成需要让人看得懂才行。而且现在的编译器如果你误写成if(a=3)编译器是可以发出警告的。以前的编译器不行才那样做。
[/Quote]
理解会有麻烦?很奇怪,反过来写就看不懂了?

另:不是所有编译器都会对这个报警,而且不是所有人都去关注警告
carrotye 2008-11-21
  • 打赏
  • 举报
回复
11楼说的很详细拉。 可以参考林锐的 高质量c/c++编程,也有说到。
lsd1025 2008-11-21
  • 打赏
  • 举报
回复
同意2楼!
zhizhi_2008 2008-11-21
  • 打赏
  • 举报
回复
UP,学习了,很好
toadzw 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 glacier3d 的回复:]
因为写成后一种时,即使不小心丢了一个=号也没事,因为编译就不通过
[/Quote]
ding ni mei lv
xianyuxiaoqiang 2008-11-20
  • 打赏
  • 举报
回复
有时候人总会犯错。而且这种小错误常常是极其难以发现的。

想强制不犯错只好让机器去检测。
用户 昵称 2008-11-20
  • 打赏
  • 举报
回复
前一种看起来已经不习惯了,俺采用后一种差不多10年了。
piginthetree 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mifeixq 的回复:]
是这样的

因为写代码的时候 == 容易写成 =
就是
if(a == 1)
...

容易写成
if(a=1)
...
这样的错误在大量代码中不容易被发现,比较讨厌
如果写成
if(1==a)这么写的话,如果写错了
if(1=a)编译器会报告错误,因为 1是右值,不能在 = 左面出现
[/Quote]同意
加载更多回复(44)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧