D:'AB' 没有这样的字符常量定义
F:0238 8不是八进制位数
G:0xabcdef 应该也错误的,0x后最多能带2位十六进制数,0可以带三位八进制数

倚天照海花无数,流水高山心自知。

2006-07-31 12:23
答案D当然是不对啦,怎么会有这样的变量呢?他要么是"AB",要么就'A',单引号表示字符形,又引号表示字符串形,字符形只有一个字节
2006-07-31 12:30
2006-07-31 12:32
2006-07-31 12:32
受教了,多谢!

2006-07-31 12:40
试一下再作结论不迟。

2006-07-31 12:40
答案D当然是不对啦,怎么会有这样的变量呢?他要么是"AB",要么就'A',单引号表示字符形,又引号表示字符串形,字符形只有一个字节
我曾经也这么认为.
可是.你为什么不去试一下呢?

2006-07-31 12:50
我刚才编译了一下,发现只有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
这样我有的很费解了。不知道怎样解释。我不懂。

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

2006-07-31 13:07
只有F选项不是常量吧,:-.456 0可以不写的。‘AB’其实就是B,‘abcd'就存了d,不过不同的机器可能不同,右到左或左到右,放满了,后面的字符就不再显示了,这样理解行么,E6可能辨认不出来,是指数能还是16进制?
[此贴子已经被作者于2006-7-31 13:17:58编辑过]
2006-07-31 13:13