为什么这是代码的输出?

时间:2014-07-02 12:27:03

标签: c

所以,这是一个基于输出的问题:

代码是:

#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语句中有字符串常量吗?

4 个答案:

答案 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有效且最后只有intswitch-cases允许strings而不是{{1}}

答案 3 :(得分:0)

  • 查看printf函数文档

    int printf(const char * format,...);

  

...成功时,返回写入的字符总数。   如果发生写入错误,则设置错误指示符(ferror)并且a   返回负数...