浮点数0是0 00000000 00000000000000000000000
浮点数1是0 01111111 00000000000000000000000
image.png
小数默认是double

大端(低地址存储高位)

初始化

局部变量默认初始化为随机值,全局整型变量和静态整型变量默认为0

输出格式

%d整型输出(四个字节),%ld长整型输出,
printf时% 2d是将数字宽度为2,采用右对齐方式输出,如果数据位数不到2位,则左边补空格。(至少2位
%02d:默认情况下,数据数据宽度不够2位是用空格填补的,但是因为2d前面有0,表示,数据宽度不足时用0填补。
%d输出的字符串格式,那就输出字符串长度;如果是字符指针,就输出这个指针指向位置的地址
%o以八进制数形式输出整数,
%o输出不带前缀八进制,%#o输出带前缀八进制。(加个0?
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符(char),遇到\0输出空格
%s用来输出一个字符串,%5s:至少输出5个字符,%.5s最多5个,遇到\0停止
%6.9s 表示显示一个长度不小于6且不大于9的字符串
%5.3s 输出占5列,但只取字符串中左端3个字符。这3个字符输出在5列的右侧,左补空格。
%f用来输出实数,以小数形式输出,(%5.2f违法,没有精度控制
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
其中%o和%x都是二进制的延伸,即八进制和十六进制,可以适用于unsigned变量输出

局部变量能和全局变量重名
char c1, c2, c3, c4[40];是合法的变量定义语句
两个字符变量c1、c2,一个字符指针c3,一个字符数组c4。
%
4s表示读取一个长度为四个字符的字符串,中间的*表示将读取到的字符串忽略

scanf确实可以设置输入整数的宽度,%3d表示取三位整数;多的舍去;
printf也可以设置输出整数的宽度,%3d表示输出至少3位,假如超过3位,有多少输出多少。
PS:C 语言中用 "%%" 打印输出字符 "%", 所以 %%d, 输出为 %d

当格式控制字符串中含有抑制符’’时,表示本输入项对应的数据读入后,不
赋给相应的变量。
scanf(“%3d%
3c%3d”,&a,&b);//输入111222333,ab值是111和333

const char *str = “123456”; sizeof(str)=8(64位),strlen(str)=6
charstr[] = “Hello”; sizeof(str)=4(32位),strlen(str)=5
image.png
例:
double x = 218.82631;
printf(“%-6.2e\n”, x);
-:左对齐;e:科学计数法
6.2:6是域宽,2是精度,即长度为6,小数2位
//(6:超过就按实际输出,不足时看是左对齐还是右对齐,左对齐在后面补空格,右对齐在前面补空格)(这里输出的字符数是9,所有符号都算上)
输出2.19e+002
%-08d表示输出占8个空格的位置,并且左对齐
“S\065AB”字符串中包含S,\065(八进制数),A,B以及结束符\0
例2
image.png
image.png

int i, *p = &i;是正确的C声明

常量

字符常量可以参与任何整数运算
image.png
&&是短路求值的,所以不会执行后面的i++

const

1.const char p; 限定变量 p 为只读。
2.const char p; p 为一个指向 char 类型的指针,const 限定 p 指向的数据为只读。所以 p 的值不能被修改,而指针变量 p 本身的值可以被修改。
3.char const p; 限定此指针变量为只读,所以 p 的值不能被修改,而 p 的值可以被修改。
4.const char *const p; 两者皆限定为只读,不能修改。

类型转换

类型转换以最大的字节为主。
char a;int b;float c;double d;则表达式“a+b*c-d”的类型为double
算术转换:把一种算术类型转换成另一种算术类型。运算符的运算对象将转换成最宽的类型,题中最宽的是double类型8字节,所以结果是double。
其他几种转换情况:
1、整型提升:把小整数类型转换成较大的整数类型。其中布尔值false提升为0、true提升为1;
2、无符号类型的运算对象:
如果一个运算对象是无符号类型、另一个是带符号类型,而且其中无符号类型不小于带符号类型,那么带符号的运算对象转换成无符号的;
如果一个运算对象是无符号类型、另一个是带符号类型,而且其中无符号类型小于带符号类型,此时转换结果依赖于机器。

声明

extern

函数的隐含储存类型是extern,函数的形参或变量的储存类型为auto
extern:外部变量
int a 其实全称是 auto int a
auto根据数据类型分配内存,register在使用到时分配CPU寄存器地址
extern “c”:实现C++代码调用其他C语言代码

局部变量

局部变量性质:当函数体被调用完毕时,变量的空间被释放。形参。

全局变量

全局变量在程序运行前就已经被分配了内存空间,定义前就能调用

static

静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。其定义方式与全局变量相同。
内存分配在装载阶段

image.png

浮点数

1.0 1e3 1.2e3

取余数

整数取余用% 浮点数取余用fmod(x,y)

枚举变量

image.png
没定义类型变量是错的