当前位置: 代码迷 >> C语言 >> 一道选择题,问了很多人都不知道答案
  详细解决方案

一道选择题,问了很多人都不知道答案

热度:88   发布时间:2006-07-31 12:23:36.0
B:-.456 错误
D:'AB' 没有这样的字符常量定义
F:0238 8不是八进制位数
G:0xabcdef 应该也错误的,0x后最多能带2位十六进制数,0可以带三位八进制数

----------------解决方案--------------------------------------------------------
以下是引用icesoul在2006-7-31 10:39:02的发言:
版主,答案D确实不对啊
我跟老师怎么评论啊
他即不是字符也非字符串啊

答案D当然是不对啦,怎么会有这样的变量呢?他要么是"AB",要么就'A',单引号表示字符形,又引号表示字符串形,字符形只有一个字节

----------------解决方案--------------------------------------------------------
B是正确的
比如有这样一道程序
#include <stdio.h>
main()
{
float m=-.456;
printf("%f",m);
getch();
}
输出结果是
-0.456
----------------解决方案--------------------------------------------------------
是-0.456000
----------------解决方案--------------------------------------------------------

以下是引用nuciewth在2006-7-31 12:23:36的发言:
B:-.456 错误
D:'AB' 没有这样的字符常量定义
F:0238 8不是八进制位数
G:0xabcdef 应该也错误的,0x后最多能带2位十六进制数,0可以带三位八进制数

受教了,多谢!


----------------解决方案--------------------------------------------------------
以下是引用nuciewth在2006-7-31 12:23:36的发言:
B:-.456 错误
D:'AB' 没有这样的字符常量定义
F:0238 8不是八进制位数
G:0xabcdef 应该也错误的,0x后最多能带2位十六进制数,0可以带三位八进制数

试一下再作结论不迟。


----------------解决方案--------------------------------------------------------
以下是引用wuyufenjr在2006-7-31 12:30:42的发言:

答案D当然是不对啦,怎么会有这样的变量呢?他要么是"AB",要么就'A',单引号表示字符形,又引号表示字符串形,字符形只有一个字节

我曾经也这么认为.

可是.你为什么不去试一下呢?


----------------解决方案--------------------------------------------------------

我刚才编译了一下,发现只有E、F编译通不过,其他的都可以,而且运行结果是。
#include <stdio.h>
main()
{
int a=125;
float b=-.456;
float c=1.25e20;
char d='AB';
int g=0xbcdef;
char h[20]="\n\\\'\123";
printf("%d\n",a);
printf("%f\n",b);
printf("%f\n",c);
printf("%c\n",d);
printf("%d\n",g);
printf("%s\n",h);

getch();
}

运行结果:
125
-0.456000
125000002505109668000.000000
A
-12817

\'S


这样我有的很费解了。不知道怎样解释。我不懂。


----------------解决方案--------------------------------------------------------

答案D是字符常量,C语言把字符常量解释成的是int整数常量,所以型如'A','AB','ABC','ABCD'(最多4位,根据编译器有所不同)都可看作字符常量。


----------------解决方案--------------------------------------------------------

只有F选项不是常量吧,:-.456 0可以不写的。‘AB’其实就是B,‘abcd'就存了d,不过不同的机器可能不同,右到左或左到右,放满了,后面的字符就不再显示了,这样理解行么,E6可能辨认不出来,是指数能还是16进制?

[此贴子已经被作者于2006-7-31 13:17:58编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案