二叉树
参考 http://t.csdnimg.cn/ozVwT
数据库
指数表示
https://blog.csdn.net/qwy1270005925/article/details/113009431
赋值奇观
给定定义语句 int a=3, b=2, c=1;
,让我们逐个检查选项中的赋值体现式:
A. a=(b=4)=3;
:这个表达式首先将 b
赋值为 4
,然后尝试将 4
赋值给 a
,但是由于赋值表达式 (b=4)
的结果是一个值,而不是一个可修改的变量,因此无法将 4
再次赋值给 a
。这是一个语法错误,因此选项 A 是错误的。
B. a=b=c+1;
:这个表达式首先计算 c+1
,然后将结果赋值给 b
,最后将 b
的值赋值给 a
。这是一个合法的赋值表达式。
C. a=(b=4)+c;
:这个表达式首先将 b
赋值为 4
,然后将 4
加上 c
的值,最后将结果赋值给 a
。这是一个合法的赋值表达式。
D. a=1+(b=c=4);
:这个表达式首先将 c
赋值为 4
,然后将 b
赋值为 4
,最后将 1
加上 4
的值,结果再赋值给 a
。这是一个合法的赋值表达式。
因此,错误的赋值体现式是选项 A. a=(b=4)=3;
if 后的条件式
可以为任意合法数值
#进制奇观
在C语言中,以0开头的数字表示八进制数。因此,变量x被赋值为八进制的011,即十进制的9。然后使用++运算符对x进行自增操作,将x的值加1,变为10。最后通过printf函数输出x的值,所以程序的输出结果是10。
break switch
这段代码是一个C语言程序,它使用了一个for循环来迭代8次。在每次迭代中,它生成一个随机数n,范围是0到4(包括0和4)。然后根据n的值执行不同的操作:
- 如果n等于1或3,它会打印出n的值并跳出switch语句;
- 如果n等于2或4,它会打印出n的值并继续下一次迭代;
- 如果n等于0,它会立即退出程序。
在每次迭代的最后,无论n的值是多少,都会打印出n的值。因此,当程序结束时,会打印出8个数字,其中最后一个数字是0。
字符常量与字符串常量 不同
字符常量 ‘0’ 和 ‘9’ 而不是字符串常量 “0” 和 “9”。
奇葩条件
在 C 语言中,赋值操作的结果是被赋值的变量的值。因此,这个循环条件实际上是一个永远为真的条件,因为 k=1 操作总是成功的,导致循环无限进行下去。
赋值
若有定义语句:char s[3][10],(*k)[3],*p;,则如下赋值语句正确的是( )
A. p=s;
B. p=k;
C. p=s[0];
D. k=s;
static 我记性很好,别耍赖
#include <stdlib.h>
这一行包含了标准库头文件 <stdlib.h>
,虽然在这段代码中并未使用到该头文件,但是这是一个好的编程习惯,以确保程序中使用的函数能够正确地被声明。
int fun()
{
static int x = 1;
x *= 2;
return x;
}
这里定义了一个名为 fun()
的函数,它没有参数,并且返回一个整数值。函数内部有一个静态局部变量 x
,它被初始化为 1。每次调用 fun()
函数时,x
的值都会乘以 2,然后返回乘积结果。
int main()
{
int i, s = 1;
for(i = 1; i <= 3; i++)
s *= fun();
printf("%d\n", s);
return 0;
}
在 main()
函数中,定义了两个整型变量 i
和 s
,其中 s
初始化为 1。然后通过一个循环,调用 fun()
函数三次,并将返回值累乘到 s
中。最后,使用 printf()
函数输出 s
的值,并返回 0。
现在让我们来计算一下程序的输出:
第一次调用 fun()
函数时,x
的初始值是 1,返回值是 2。
第二次调用时,x
的值已经变成了 2,返回值是 4。
第三次调用时,x
的值已经变成了 4,返回值是 8。
因此,最终输出的结果是 2 * 4 * 8 = 64。
所以程序的输出是 64
。
结构体结构体,有一点奇怪
文件操作
参考 https://www.cnblogs.com/spmt/p/10830600.html
自己补写程序注意变量类型