选择题和基本概念题
【数据类型】
C语言基本的数据类型有 int long float double char。
【字符型 char,整数型 int,浮点型 float,双精度浮点型 double】是C语言中最基本的数据类型。
1 2 3 4 | 字符型 char <-> %c 整数型 int <-> %d 浮点型 float <-> %f 双精度浮点型 double <-> %lf |
常考的 int 表示的范围在不同环境下是不一样的,在绝大多数情况下,是32位,但在Turbo C 2.0环境下,表示的是 16位。
如果 int 表示的是16位,则范围从 -32768~32767。
下面的程序在 C-Free 和 Turbo C 2.0 环境下运行结果是不一样的。
1 2 3 4 5 6 7 8 9 10 | #include <stdio.h> int main() { int i = 32767, j = -32768; printf("%d %d\n", i, i+1); printf("%d %d\n", j, j-1); getchar(); return 0; } |
在 C-Free 中,i 和 j 是32位的;在 Turbo 2.0 中, i 和 j 是16位的。
如果把 i 和 j 的类型改为 long (%ld) , 那么在 C-Free 和 Turbo 2.0 表示的都是
【表达式】
表达式分为逻辑表达式和算术表达式。
逻辑表达式通常出现在 if 和 while 语句的后面,包含 > < && || ! 等运算符,值为真或者假,也就是 1 或者 0
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main() { int i = 3, n; n = i>3; printf("%d\n", n); return 0; } |
算法表达式中常考的就是 ++i 和 i++ 了。
++i、i++ 和 i = i + 1的不同之处在于前者比后者多了表达式的功能。
表达式 ++i 的值是 i+1,而表达式 i++的值是 i
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main() { int i = 3, n; printf("%d\n", i++); printf("%d\n", ++i); return 0; } |
2011年春选择题26题
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int main() { int x,a=3,b=2; x= a>b++ ? a++ : b++; printf("x=%d a=%d b=%d\n", x, a, b); return 0; } |
【条件表达式中的短路】
计算机其实也会偷懒,在 if ( 条件a && 条件b && 条件c) 语句中,如果发现 条件a 为假,就不再去判断条件b和条件c了。
偷懒之心,人皆有之。只要符合要求,偷懒还有助于提高效率。 如果 条件a 为假,那整个表达式一定为假,也就是 0
2010年秋 基本概念题 第3题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main() { int a=0, b=1, c=2; if (a>0 && ++b>0) c++; else c--; printf("a=%d b=%d c=%d\n", a, b, c); return 0; } |
对于条件表达式中的或者关系 if ( 条件a || 条件b || 条件c) ,计算机也会偷懒一下,你知道是怎么偷懒吗?