#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;
}
}
有人可以解释上面的代码是如何工作的吗? switch
如何跳转到case2
标签?
答案 0 :(得分:4)
检查printf()
printf()
。它提到
返回值
成功返回后,这些函数返回打印的字符数(不包括用于结束输出到字符串的空字节)。
这里,switch
调用的返回值用作控制表达式值的"Do"
语句。因此,在这种情况下,为了打印字符串2
,它返回2.这与案例标签newline
匹配。
然后,标准输出是行缓冲的。在第一个printf()
之后,您没有刷新指令或printf()
,因此下一个newline
调用的连续输出并置到输出缓冲区并且最后,在遇到"DoSecond"
后,它会一起刷新到控制台/终端,显示int main()
。
尽管如此,int main(void)
至少应该 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/csv"); //XML file only
intent.addCategory(Intent.CATEGORY_OPENABLE);
try
{
startActivityForResult(Intent.createChooser(intent, "Select"), 100);
} catch (android.content.ActivityNotFoundException ex)
{
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Drive Not Found", Toast.LENGTH_SHORT).show();
}
符合托管环境的标准。
答案 1 :(得分:2)