10-13 C语言例题练习

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 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_46400833/article/details/109040952