所以,这是一个基于输出的问题:
代码是:
#include <stdio.h>
int main()
{
char ch;
if ((ch=printf( "")))
printf("It matters\n");
else
printf("It doesnt matter\n");
return 0;
}
为什么输出是无关紧要的?究竟在if语句中测试了什么?
其次,在switch case语句中,如果我这样做,比如,
char a[] = "abc";
然后我做,
switch(i)
{
case abc:
........
}
为什么这是错的?我们在case语句中有字符串常量吗?
答案 0 :(得分:4)
printf()
返回写入的字符数。当使用空格式字符串(""
)调用时,该值当然为0,if
将被视为“假”,因此else
分支被采用
不,你当然不能{C}中的字符串switch()
。
答案 1 :(得分:0)
printf返回打印的字符数,在您的情况下为0个字符。
所以你将ch设置为0。
分配采用分配的值,在本例中为0。
0为false,因此if语句转到else块。
答案 2 :(得分:0)
printf
会返回它在屏幕上打印的字符串的长度,因此printf( "")
不打印任何内容,因此length=0
因此if(0)
未执行else
,因此会转到char a
部分。< / p>
char a[]="abc" OR char *a="abc"
是一个字符,而不是字符串,因此char
有效且最后只有int
和switch-cases
允许strings
而不是{{1}}
答案 3 :(得分:0)
查看printf函数文档
int printf(const char * format,...);
...成功时,返回写入的字符总数。 如果发生写入错误,则设置错误指示符(ferror)并且a 返回负数...