- 数组名做右值(等号右边)使用时,自动转换成指向数组首元素的指针。作为左值,依旧是数组类型。
int a[5], b[5] = { 4, 3, 2, 1 };
a = b;
a = b这个表达式,a和b都是数组类型的变量,但是b做右值使用,
自动转换成指针类型,而左边仍是数组类型,所以编译器报的错误信息是
error: incompatible types in assignment。
gcc -E:显示预处理后的代码; 以#开头的命令为预处理命令 ; 采用#define,可以有效的避免硬编码(Hard Coding)
gcc -D:进行条件编译;
#include<stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
int c=a+b;
#ifdef CC
a=4;
b=9;
c=a+b;
printf("%d\n",c);
#endif
printf("%d\n",c);
}
gcc -DCC text.c 那么,得到的结果就会执行ifdef,13 13;
gcc text.c 那么,不会进行编译;
C语言的伪随机数:
- 计算公式:线性同余(LCG),rand()得到
- 初始值:称为Seed(全局变量),可以用srand函数指定Seed。通常我们通过别的途径得到一个不确定的数作为Seed,例如调用time函数得到当前系统时间距1970年1月1日00:00:00[17]的秒钟数,然后传给srand:srand(time(NULL));调用time函数需要包含头文件time.h,这里的NULL表示空指针。
字符串以’\0’结尾,对于字符类型,如果没有赋初始值,那么默认初始值为’\0’(0)。