关于短路求值的一个问题
#include <stdio.h>int main()
{
char ch = "FishC";
int i;
printf("请输入你想访问的字符序号(0~5):");
scanf("%d", &i);
if (!(i >= 0 && i <= 5 && printf("%c\n", ch)))//逻辑值为真打印ch对应的字符,逻辑值为假打印非法访问四个字,应该怎么理解!()用两个逻辑与(&&)连接的这串代码呢?(明白整体想表达的意思,但是自己不懂得解释为什么这么输)
{
printf("非法访问!\n");
}
return 0;
} 当i在0~5且出处正确时(i >= 0 && i <= 5 && printf("%c\n", ch)) 返回真 否则运行printf("非法访问!\n"); 如果 i < 0,
首先 条件 中的 i >= 0 为假,然后条件直接为真(执行非法访问),不继续去计算后面的。
如果 i > 5,
首先 条件 中的 i >= 0 为真,但是 条件 中的 i <= 5 为假,然后条件直接为真(执行非法访问)。
如果 i >= 0 并且 i <= 5,
首先 条件 中的 i >= 0 为真,然后 条件 中的 i <= 5 为真,printf('%c\n', ch) 返回 2(也是真),然后条件为假(不执行非法访问)。
页:
[1]