C++ 下面代码的输出是如何产生的:DoSecond #包括 int main() { 开关(printf(“Do”)) { 案例1: printf(“第一次”); 打破 案例2: printf(“第二次”); 打破 违约: printf(“默认值”); 打破 } }
有人能解释一下上面的代码是如何工作的吗?C++ 下面代码的输出是如何产生的:DoSecond #包括 int main() { 开关(printf(“Do”)) { 案例1: printf(“第一次”); 打破 案例2: printf(“第二次”); 打破 违约: printf(“默认值”); 打破 } },c++,c,switch-statement,printf,C++,C,Switch Statement,Printf,有人能解释一下上面的代码是如何工作的吗?开关如何跳转到case2标签?检查是否有printf()。它提到 返回值 成功返回后,这些函数返回打印的字符数(不包括用于结束字符串输出的空字节) 这里,printf()调用的返回值用作控制表达式值的开关语句。因此,在本例中,对于打印字符串“Do”,它返回2。这与案例标签2匹配 然后,对标准输出进行行缓冲。在第一次printf()之后没有刷新指令或newline,因此下一次printf()调用的连续输出与输出缓冲区并列,最后在满足newline后,它一起刷
开关如何跳转到case2
标签?检查是否有printf()
。它提到
返回值
成功返回后,这些函数返回打印的字符数(不包括用于结束字符串输出的空字节)
这里,printf()
调用的返回值用作控制表达式值的开关
语句。因此,在本例中,对于打印字符串“Do”
,它返回2。这与案例标签2
匹配
然后,对标准输出进行行缓冲。在第一次printf()
之后没有刷新指令或newline
,因此下一次printf()
调用的连续输出与输出缓冲区并列,最后在满足newline
后,它一起刷新到控制台/终端,显示“DoSecond”
也就是说,int main()
至少应该是int main(void)
,以符合托管环境的标准。的返回值为
如果成功,写入的字符数;如果发生错误,写入的字符数为负值
因此“Do”
有2个字符,因此开关进入案例2:
#include <stdio.h>
int main()
{
switch (printf("Do"))
{
case 1:
printf("First\n");
break;
case 2:
printf("Second\n");
break;
default:
printf("Default\n");
break;
}
}