有关C语言的一些问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 02:26:22
各位大大小弟初学C语言,有些问题希望各位高手给予解答:
1.printf("ab\'E\' \t\bcd\n");
结果是ab'E' cd
为什么空了两格\b不是退格吗?
2.有关++,--的问题
main()
{int i=4,j;
j=i++;
printf("j=%d,%d\n",j,i++);
j=++i;
printf("j=%d,%d\n",j,++i);
j=--i;
printf("i=%d,%d\n",i,j);
j=i--;
printf("i=%d,%d\n",i,j);

请将每个程序依次说明,在说明结果
3.main()
{int a2;
char c='A';
a2=c;
printf("%f,%c",a2.c);
结果是10.000000,A
请问为什么a2的结果是8个有效数字不应该是7个吗?
4.与3基本相同
main()
{int a,b;
float x,y;
x=36.42,y=12.01;
a=(int)(x+y);
b=(int)x%(int)y;
printf("%d\n",a);
printf("%d\n",b);
printf("%f,%f",x,y);
}
结果是:
48
0
36.41998,12.010000

1, /t 代表跳到下个制表位,一个制表位8个格子,加上前面的字,应该是3个空格,所以再回一个,就是2个空格
2,j=i++; j=4;i+=1;
printf("j=%d,%d\n",j,i++); j=4,i=5;i+=1
j=++i; j=i+1(j=7);i=7
printf("j=%d,%d\n",j,++i);7 8
j=--i; 7 7
printf("i=%d,%d\n",i,j); i=7,7
j=i--; j=7,i=6
printf("i=%d,%d\n",i,j); i=6,7

3,占位符float用%f,double用%lf,所以如果你把x声明为float就要用%f,如果声明成double就要用%lf。但是printf不区分float和double,它一概当double处理,所以不要在%f里面加上l,而且C默认的输出精度是小数点后6位,你一般是看不到6位以后的值的,如果你想多显示一些精度值,你可以用%.nf, n为你想要的精度值。
4,题目错了吧

1、在没有看清楚前输出前面的字符被被后面的覆盖了,误以为没有输出\\
如果是打印机输出(而不是屏幕输出)就不会出现这种情况
2、int i=4,j;
j=i++; //等价于j = i; i ++;
printf(\"j=%d,%d\\n\",j,i++);// 输出j=4,5 然后i++
j=++i; //等价于i++; j = i
printf(\"j=%d,%d\\n\",j,++i); //i++,然后输出j=7,8
同理...