#include <stdio.h>
int main()
{
char ch[6] = “FishC”;
int i;
printf("请输入你想访问的字符序号(0~5):");
scanf("%d", &i);
if (!(i >= 0 && i <= 5 && printf("%c\n", ch[i])))
{
printf("非法访问!\n");
}
return 0;
}
输入0-5,第一个&&结果为真,继续执行,执行到printf后,输出printf里面的结果。
第一个小括号里的结果为真,继续执行第二个小括号,结果取反。整个if语句结果为假,应为if语句后面没有else,所以整个程序只输出了if语句里printf所输出的结果。
如果输如的为非0-5的数:第一个&&结果为假,所以后面的printf就被忽略了。所以第一个小括号结果为假,继续执行第二个小括号,取反。整个if语句结果为真,然后执行if语句后的printf。
所以整个程序输出结果if语句后的printf。