#include<stdio.h> int main() { int i,j,t; i=j=2; t=++i||++j; printf("%d,%d,%d\n",i,j,t); return 0; }
1个回答
展开全部
因为
t=++i || ++j; ①
这一句
前面已经初始化i=j=2;
在①中的++i的时候,i的值变为3
++i 和 ++j 中间使用的 || 连接的,是或的意思
即如果 ++i 为true,则不运行后面的 ++j 并直接返回真,即 ++j 被短路
如果 ++i 为false,则运行后面的 ++j ,根据 ++j 的结果,将true或false返回给 t
而 ++i 执行的结果为3,在C语言中,0为false,其余都为true
即 ++i 得到的是true,所以 ++j 没有被执行,j的值没有变,仍为2
t=++i || ++j; ①
这一句
前面已经初始化i=j=2;
在①中的++i的时候,i的值变为3
++i 和 ++j 中间使用的 || 连接的,是或的意思
即如果 ++i 为true,则不运行后面的 ++j 并直接返回真,即 ++j 被短路
如果 ++i 为false,则运行后面的 ++j ,根据 ++j 的结果,将true或false返回给 t
而 ++i 执行的结果为3,在C语言中,0为false,其余都为true
即 ++i 得到的是true,所以 ++j 没有被执行,j的值没有变,仍为2
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询