运算与赋值的等号前后怎么写啊?

year%4==0  为什么不是  0==year%4

z=a+b对吧  a+b=z是错的

那为什么上面是那样写啊???

大錘審問
浏览 2676回答 5
5回答

JackWho

呵呵,很经典的问题 year % 4 == 0 /* 注释: year 对 4 取余( 求模 ) 的结果是否于 0 相等 */ // 下面的这种写法和上面的写法是等价的,但是更为推荐,因为将 == 误写做 = 是很多程序员 ( 甚至 // 是有较多编程经验的程序员 ) 易犯的错误,这种错误属于逻辑错误,比较隐蔽,不易发现      // 比如当你想判断  age 是否等于 20 岁的时候,使用我们的最佳实践法,写作     if (20 = year){ // 这里不小心将 == 写成了 = ,就会因为 赋值操作符左边只能为变量的语法     // 检查而导致错误暴露出来         // do something     } 0 == year % 4 // 这种写法被称为 == 的最佳实践 // 而  z = a + b; 是 "将 a + b 的值  赋值给 z ", = 这里读作 "赋值", 赋值操作符 ( 即 "=" )  // 左边只能是单个变量,不能是表达式, 注意和数学中的 等于符号区别, 这里的赋值操作符并没有交换性

慕数据8240494

前者是算数符号  判断两边是否相等后者是赋值符号  规定把右边的值赋值给左边

qq_狼烟四起_0

“=”这个符号是赋值号,不是数学上的等号。赋值号的运算顺序是从右向左,z=a+b的读法是把a+b的值赋给z。“==”这个符号是等号,它的运算顺序是从右向左,year%4==0的读法是year这个变量取余数结果是0,这个符号一般用于循环语句和选择语句的判定条件,没赋值号用的频繁。

慕用4063026

C11规定左值是变量;z=a+b这里的z是变量,把a+b的值赋值给变量zyear%4==0意思是左值等于0的情况下。0==year%4,这里右值不为0等式就是错的

__innocence

等号是赋值,两个等号是判断是否相等

慕田峪6141110

MRZSWXTHKEGPSFYIFQKNHIDCFRPZWTMQGRHDAAGTGSZQKGXOUKUHKEELHIBCIWCEBIMRKHXXXBVOSXQZTNKKHQHHSEEVOJMEYSLBXWKQQNKHLKEUTHVBVNIMFBHNKILDDGCOWILECZVIFMQOENKENQYBGTKRIWFZWWTIFNPWJXEHRRBYMQBYSZKQUKXUXXYOJGDNKBXAWJJGFFZXQUGXEREMMERXAZJCPNGGAURUDUYEQJPPZKJFWZJJNKTANRKNQQHRYSLISFWGOLSOSWMJZWNYFVPSPTRXHRUYEVFJDXVWDQRHUKYSXOHCMSPTZWGELUXRUHKNBZWSVLCYFTSGGKZPCADNXWXHHATIWTHAQURKXQRYVYWJNHRQZKBSVPYZSLBNBROLISFWPBRUKHSMVZSJLOCWMZXXUOOCLZPMFFFTXTPSFMQPRHEEUWPAQCWQADHBNAAQGEHEIRDCFJZGWZUHCFRROFIPIFXASYHHHULEHVLSPERBKYYCCSOXXESOUISZFPJTQZGBEOBVDOHNUHYOLZHFBIVMEZFPSGRNLPSILPTGDIBEUNZGJYSONTGMWKTDGNMWFVROSCYBFPCYRHCBBOOWNUNWJSYEWFHXNYRCMIPLYMMSBBEURXWZBOTCFCCUZCIJGGJOLSFHXNBHWWSPHUYELLPLKERYVJTGVIYYRYEBYOBBVIGQNKOTXKXOJJWCSPJCGZIDPSNDJJZQWTONNNDEZSFPFBKJELBZZHVBNGDNLSNRBOPVPISATQTXBLSPIOFVLOYFSDDWWRMJGTAQBLUSIPXWQQNPYRYOOBXUXRCVUOEYINRBRQZSCPTKRRBYIYFVWZJJJGDZJLGWWXKCPTPJSZFMKNQPZAQBTJJGDTMC
打开App,查看更多内容
随时随地看视频慕课网APP