1、是否会输出 “hello-std-out”?
#include<stdio/h>
#include<windows.h>
int main()
{
while(1)
{
fprintf(stdout,"hello-std-put");
fprintf(stderr,"hello-std-out");
sleep(1);
}
return 0;
}
备注:
stdout和stderr是不同设备描述符。stdout时块设备,stderr不是。对于块设备,只有
当以下情况时才会被输入:
遇到回车;
缓冲区满;
flush被调用;
而stderr则不会。
2、这段程序有问题吗?
#include<stdio.h>
int main()
{
int a=1,2;
printf("a:%d\n",a);
return 0;
}
上述代码在编译时出错(语法错误)。逗号表达式没错,可是在初始化和变量声明时,逗号并不是逗号表达式的意义。
修改上述程序:
int a =(1,2);
3、下面的程序会有什么样的输出呢?
#include<stdio.h>
int main()
{
int i=43;
pritnf("%d\n",printf("%d",prinf("%d",i)));
return 0;
}
程序会输出4321,为什么?
因为printf返回值是 输出的字符个数。
4、下面的程序会输出什么?
#include<stdio.h>
int main()
{
float a=12.5;
printf("%d\n",a);
printf("%d\n",(int)a);
printf("%d\n",*(int*)&a);
return 0;
}
程序输出: 0 12 1095237632
原因是:浮点数是4个字节,12.5f转成二进制是:0100 0001 0100 1000 0000 0000 0000
十六进制是:0x41480000
,十进制是1095237632
5、下边程序输出什么?原因为?
#include<stdio.h>
int main()
{
int a =1;
switch(a)
{
int b=20;
case1:
printf("b is %d\n",b);
break;
default:
printf("b is %d\n",b);
break;
}
return 0;
}
该程序在编译时报错,“b”的初始化操作由case 标签跳过,default标签跳过“b”的初始化操作;
扫描二维码关注公众号,回复:
12416483 查看本文章