tttttt@@@@@@ 发表于 2023-6-8 09:48:23

怎么执行的

设有int i;则表达式(i=1,i=10)?i++||++i:++i的值为 (A   )
    A).1      B).2       C).3      D).10

isdkz 发表于 2023-6-8 09:56:55


表达式(i=1,i=10)?i++||++i:++i是一个条件表达式,它的形式是条件?表达式1:表达式2,意思是如果条件为真,就执行表达式1,否则执行表达式2。

在这个例子中,条件是(i=1,i=10),这是一个逗号表达式,它的形式是表达式1,表达式2,意思是先执行表达式1,然后返回表达式2的值。

所以,i=1,i=10的值就是10,因为先把1赋值给i,然后返回i=10的值。在C语言中,任何非零的整数都被视为真,所以条件为真。

那么,就执行表达式1,也就是i++||++i。这是一个逻辑或表达式,它的形式是表达式1||表达式2,意思是如果表达式1为真,就返回真,否则返回表达式2的值。

在这个例子中,表达式1是i++,这是一个后置自增运算符,它的含义是先返回i的值,然后再把i加1。所以,i++的值就是10(因为前面已经把i赋值为10),然后i变成11。

由于10为真,所以逻辑或表达式就返回真。在C语言中,真被视为1⁴。所以,整个条件表达式的值就是1。

答案是A) 1。

tttttt@@@@@@ 发表于 2023-6-8 10:23:36

好嘞谢谢能不能再问一下对于&&如果&&前面的表达式为真是会继续执行吗,为假是不是直接返回假?
页: [1]
查看完整版本: 怎么执行的