|
![]() | 作者: None [jacky8714]
![]() |
登录 |
#include <stdio.h> #define format "%s is a string\n" int main(void) { printf(format,format); return 0; } 结果为: %s is a string is a string 为什么这样输出???? 书上说printf(format,format)'这种格式和printf("%s is a string\n","%s is a string\n"); 是一样的 那为什么我将程序改成printf("%d is a what?\n","%d is a what?\n"); 之后,结果却是: 404 is a what? 请问这是什么原因?谢谢各位。 另外附一个问题 #include <stdio.h> int main(void) { char ch = 's'; while (ch < 'w'){ //编译器在此处报错 printf("%c",ch); ch++; } return 0; } 书上的一个习题,他请问我将输出什么结果? 可编译器在那里报错,我想知道C不是有自动转换数据类型的能力,为什么不能进行比较? 谢谢 [此贴被 None(jacky8714) 在 07月08日20时34分 编辑过] |
地主 发表时间: 04-07-08 20:32 |
![]() | 回复: renyechao [renyechao] ![]() |
登录 |
printf(format,format);翻译过来就是 printf("%s is a string",%s is a string) 其中引号中的 %s就代表 %s is a string这个字符窜 输出完这个字符串后再输出 is a string 就是以上的结果了 |
B1层 发表时间: 04-07-08 21:44 |
![]() | 回复: sniper167 [sniper167] ![]() |
登录 |
#include <stdio.h> #define format "%s is a string\n" int main(void) { printf(format,format); return 0; } 结果为: %s is a string is a string ---------------------------------------- 我觉得结果应该是 "%s is a string\n"is a string 郁闷喃 想不通为什么会输出 %s is a string is a string 哪位解释一下喃 [此贴被 啥都不会(sniper167) 在 07月08日23时53分 编辑过] |
B2层 发表时间: 04-07-08 23:25 |
![]() | 回复: sniper167 [sniper167] ![]() |
登录 |
#include <stdio.h> int main(void) { char ch = 's'; while (ch < 'w') { printf("%c",ch); ch++; } return 0; } 我的XP+TC2.0运行正常 输出stuv |
B3层 发表时间: 04-07-08 23:39 |
![]() | 回复: jhkdiy [jhkdiy] ![]() |
登录 |
printf(format,format); 我的想法是这样的: 估计编译器将这条语句等价于下列语句: printf("%s is a string\n","%s is a string\n"); 第一个"%s is a string\n"中的%s是需要实参的,它直接将第二个"%s is a string\n"作为第一个"%s is a string\n"的%s参数的实参;于是第一次输出: %s is a string is a string 跟着遇到第二个"%s is a string",%s还是需要一个参数,但找不到,所以什么也不输出。 [此贴被 jhkdiy(jhkdiy) 在 07月09日00时34分 编辑过] [此贴被 jhkdiy(jhkdiy) 在 07月09日00时39分 编辑过] |
B4层 发表时间: 04-07-09 00:33 |
![]() | 回复: jhkdiy [jhkdiy] ![]() |
登录 |
对于printf("%d is a what?\nprintf("%d is a what?\n","%d is a what?\n"); 其中%d需要一个数字参数,而其后却是一个字符串,我估计编译器是将"%d is a what?\n"的地址来作为%d的参数。 |
B5层 发表时间: 04-07-09 00:43 |
![]() | 回复: None [jacky8714] ![]() |
登录 |
哦,对~~ 但是参数不应该加“”呀 比如 printf("%d is something",x); 这里的X的没有引号呀,加引号效果是一样的? 我试试。 还有如果那个程序没错,应该输出stuvw才对啥! |
B6层 发表时间: 04-07-09 13:07 |
![]() | 回复: None [jacky8714] ![]() |
登录 |
哦,懂了,谢谢。 |
B7层 发表时间: 04-07-09 13:08 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号