c语言中a=2;printf("a=%%d",a);为啥答案是a=%d?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中a=2;printf("a=%%d",a);为啥答案是a=%d?相关的知识,希望对你有一定的参考价值。

两个连续的%,表示字符%。后面的a没有对应的格式说明就不能输出。
c程序设计教材里有说明哦 P82
参考技术A 是的,这里的第一个百分号是“逃逸符”,
它告诉编译器:“我要输出一个%,请不要把%同d联合在一起进行解释,一般字符串化”
所以,无论a是什么值,都没有关系,根本没有输出它

测试代码

void
main(void)

unsigned long a=2;
printf("a=%%d\n",a);

return 0;


输出结果:

a=%d
参考技术B %%被转义回去了本回答被提问者采纳

C语言 main

程序(1) main() int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf("%d,%d,%d,%d\n",a,b,c,d); 输出结果为1,1,2,0 为什么 请解析 谢谢 (2)若有定义 float x=1.5;int a=1,b=3,c=2;正确的switch 语句是为什么是 switch(a+b) case1:printf("*\n"); case2+1:printf("**\n");正确 而switch((int)x); case1:printf("*\n"); case2:printf("**\n");为什么不正确呢 请解析 (3) main() int i; for(i=0;i<3;i++) switch(i) case0:printf("%d,i); case2:printf("%d,i); default:printf("%d,i); 输出结果为——请解析 谢谢 (4) main() int x=1,y=0,,a=0,b=0; switch(x) case 1:switch(y) case 0:a++;break; case 1:b++;break; case 2:a++;b++;break; printf("%d %d\n",a,b); 输出结果为什么为21 请解析 谢谢

1.解析:
if(a=1) 是将1的值赋给a,然后a=1>0 执行if后面的语句了 。要是你搞糊涂了应该是这个if(a=1)与if(a==1) 后面是关系表达式,前面个只是赋运算。
2 解析:
正确是因为他符合所有语法要求,case 后面是常量表达式,switch(表达式)都满足了,所以正确啊,后面错误的原因在switch((int)x)后面有一个分号。
3.解析:000122,i=0时候,switch内的语句执行了3次,应为没有break,i=1时候,执行了1次,i=2时候执行了2次。
4.解析:x=1时候,外面switch语句从case 1开始执行,case1中的switch使a的值+1了,然后break语句从case1中的switch跳出,在执行外面的switch中的case2,a和b的值又加了1,所以是2 1
参考技术A 如果你想参加 国际c语言混乱代码大赛 ,那么这些代码的混乱程序还太低,但是如果你是想解决你程序中遇到的问题,那么任何人看到这样的代码都会失去继续读下去的耐心. 参考技术B 第一题,if(a=1)出错 应该改成if(a==1) 楼主要分清楚赋值运算符和关系运算符的区别
如果是赋值运算符,意思就是将1赋给a, 然后判断a是否=0,不等0的话执行b=1;c=1;

第二题:搞不懂程序目的是什么,下面的switch也是可以运行的.VC6编译通过.

第三题 000122 原因 case后面没有break.所以在找到对应的case后会一直执行下去.i=0 输出000 ;i=1 输出default 1 ;i=2 输出 22
即为000122

第四题:
main()

int x=1,y=0,a=0,b=0;
switch(x)

case 1:switch(y)

case 0:a++;break;
case 1:b++;break;

case 2:a++;b++;
break;
printf("%d %d\n",a,b);

一样的道理 switch(x)的case1后面没break;所以 switch(x)的case2照样执行.

以上是关于c语言中a=2;printf("a=%%d",a);为啥答案是a=%d?的主要内容,如果未能解决你的问题,请参考以下文章

在C语言里,printf怎么输出2个变量?

C语言中 printf语法printf("%d %d %c\n",a,b,c);和printf("%d %d %c\n",&a,&b,&c);啥

C语言里面float数据用printf(“%d”)输出的问题

C语言 main

C语言四舍五入保留两位小数

C语言中除法怎么取得小数?