C语言的几个问题

1 八进制的表示有 0--7
then十六进制是什么? 是0-9 a-f 还是0-8 a-g ?
2 字符串“Hello you” printf("%s\n",b); 输出结果是?

3 if(a<b)
if(c==d) y=0;
else y=1;
如果下面的if else是第一个if判断里的,那么难道不用加上“{ }”吗?

4 有如下定义;
struck sk
{ int a;
float b;}data;
int *p;
若使p指向data中的a域,正确的赋值语句: p=&data.a
为什么写成 *p=data.a 不行?

5 a=5,b=2.5,c=3.6;
是逗号表达式,作为语句来写是正确的吗?能告诉我为什么吗?

6 RDMS中的关系模式 RDMS是什么?
7 C语言程序是不是经过:
.cpp (编译后生成) .obj 一个二进制文件 (连接后生成).exe 一个可执行文件?
.cpp是不是表示 源程序?
Sorry啊!
第2题全题是这样的:
main()
{ char b[]=“Hello you”;
printf("%s\n",b);
}

建议下次提问不要一口气写太多问题.

1. 0-15. 计算机界通常用A-F(小写也可以)表示10-15。

2. 如果指针变量b指向字符串“Hello you”,则 printf("%s\n",b); 输出结果是“Hello you”并且换行。

3. 可以加也可以不加。if (c==d) y=0; else y=1; 只算一个语句,在a<b的条件下执行。如果a<b的条件下有两个或超过两个语句,那就必须要加{}了。
但是从可读性和可维护性的角度考虑,还是加上{}更好。

4. p=&data.a的意义是使p指向data中的a域。
*p=data.a 的意义是:如果p确实已经指向一个整型域,则把data.a的值赋给这个整型域。举例:
int x, *p=&x; //p指向x
*p = data.a; //相当于 x = data.a
因此,若使p指向data中的a域, 必须用p=&data.a 。

5. a=5,b=2.5,c=3.6; 作为逗号表达式,可以用作for (,,)中的第一段(循环初值). 但作为语句来写,多数编译器不通过。也许是C语言标准规定的,没有道理可讲。我们完全可以写一个C编译器让他合法地作为连续执行的语句。

6. RDMS = Relational Database Management System

7. 扩展名.cpp一般表示用C++写成的源程序,.c一般表示用C写成的源程序; 源程序经过编译生成目标文件,扩展名一般是.obj或.o; 目标文件再和运行库等文件连接,生成可执行文件。常见的可执行文件的扩展名是.com 和.exe。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-09-21
1 16进制是0-9 A-F
2 你这个问题不清楚
3 不用,因为第二个if牵套于第一个,而最后那个else右牵套于第二个if
所以不用,不知道这样解释你能不能理解,就是这个意思大概

4 因为指针是取地址的,不能直接赋值的,得用&取地址

5 当然不对要用;号分开的,除非是定义的时候比如int a,b,c;这样可以用逗号

6 这个我不知道

7 cpp是c++的源程序文件
第2个回答  2006-09-21
4 有如下定义;
struck sk
{ int a;
float b;}data;
int *p;
若使p指向data中的a域,正确的赋值语句: p=&data.a
为什么写成 *p=data.a 不行?
为什么写成 *p=data.a 不行? p 没有分配内存
相似回答