C语言题:已知a=b=c=0;则++a||++b&&c++的值为?1,0,0,1

来源:学生作业帮助网 编辑:作业帮 时间:2024/12/01 04:26:20
C语言题:已知a=b=c=0;则++a||++b&&c++的值为?1,0,0,1
xSr@~^&;BԻ^$FosԪ@*IZRBKKlxO8::d9{+ro8:n>ݾ/K.;j,%$ˡOq@eQr'[)rC|_7ѻܥKYK+?9_h`ӑ=b)_0so DN~o nRzqe H@My-M> ؾy[o{7M v8 0a&>{3%Y*CJ+VBj^Hfԛ@*oXD3V4ܟlZKXJ,,dF]a1&l$Z[TuؑUqBdX~H& qW`}\"[ WIY B,5 1[V +rDL~Y 9fɯ(XO8SY Ł9fx @E^5ʎ L'-ӦhÍNA_civ<- OMݟ

C语言题:已知a=b=c=0;则++a||++b&&c++的值为?1,0,0,1
C语言题:已知a=b=c=0;则++a||++b&&c++的值为?1,0,0,1

C语言题:已知a=b=c=0;则++a||++b&&c++的值为?1,0,0,1
逻辑运算符并不是运算符两边的表达式一定都执行,就本例来说:
a = b = c = 0;
d = ++a||++b&&c++;
1、&&的优先级比||高,注意优先级是“结合优先级”而不是“计算优先级”.所以整个表达式可以看做++a||(++b&&c++)
2、对于一个||逻辑或来说,只要||左边的表达式为假(即0)才执行||右边的表达式(即本例中的++b&&c++),如果||左边表达式已经为真,那么会造成所谓的“短路”即||右边的表达式不再执行
3、由于++a是先++再赋值,则a=1,由于||左边表达式已经为真(非零),则短路,右边表达式不执行
4、按上面描述,答案a = 1,b = 0,c = 0,d = 1
总结,&&运算符,除非该操作符左表达式为真,才执行右表达式,否则直接为假
||运算符,除非该操作符左表达式为假,才执行右表达式,否则直接为真