输入和输出
printf()打印的是字符串而不是整数
#define _CRT_SECURE_NO_WARNINGS消除安全周期编译的影响
%d %o %x 分别表示以十进制 八进制 十六进制显示数字
%hd %ho %hx short 类型整数
C语言规定long 类型至少占32位
\b退格
sizeof 使用括号与否取决于运算对象是类型还是特定量,当是类型时括号必不可少,当是特定值时可有可无;
%10d 表示输出结果有是个空格宽度,默认结果位于字段的右端
%-10d 输出结果位于字段的左端;
printf()函数有返回值,返回打印字符串的长度,如果输出有误则返回一个负值;
scanf()根据%d 每次读取一个数字字符 会跳过空白字符 当读取到非数字字符时,它便认为读到了整数末尾;
scanf()根据%c 只读取第一个字符且该字符可以是空格;
%s把输入解释成字符串。从第一个非空白字符串开始,到下一个空白字符之前的所有字符都是输入;
scanf()函数返回成功读取的项数;如果没有读取任何项,且需要读取一个数字而用户却输入一个非数值字符串,scanf便返回0;
printf和scanf的*修饰符
printf():如果不想预先指定字段宽度,希望通过程序来指定,则可以用*修饰符代替字段宽度。但还是要用一个参数告诉函数,字段卷度应该是多少;
scanf():把*放在%和转换字符之间时,会使scanf跳过相应的输出项;在使用scanf格式化输入时不能把\n加在字符串末尾,否则会需要多输入一个数据才会结束输入
不要自作聪明
如果一个变量出现在一个函数的多个参数中,不要对该变量使用递增或递减运算符
如果一个变量多次出现在一个表达式中,不要对该变量使用递增或递减操作符;
const定义常量,具有不可变性;
const定义常量指针 ,指针指向的内容不能改变,但可以指向其他地址int const *p; 或const int *p;这两种写法是一样的,表示p指向的内容是常量
1、常量指针说的是不能通过这个指针改变变量的值,但是还是可以通过其他的引用来改变变量的值的。
2、常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变,常量指针可以指向其他的地址。
int *const p;
指针常量,指针本身是个常量,不能在指向其他的地址,可以通过指针改变其内容 int *const p; 表示指针p是个常量,它本身不可改变。需要注意的是,指针本身不可变,但指向的对象可变。
指向常量的指针常量,const int *const p; 表示指针本身不可变,也不能通过指针修改所指向地址的内容。需要注意的是,依然可以通过其他引用修改该指针指向地址的内容。
如上图所示 常量指针x只能改变其指向地址而不能通过指针改变其值,而指针常量y则相反;只能改变值,而不能改变指向;
for循环的第一个语句不一定是给变量赋初值,也可以使用printf语句,在执行循环的其他部分之前,只对第1个表达式求值一次或执行一次。
根据C语言标准 case后的常量不能为浮点数
getchar()和putchar()用法:
getchar()每次只读取处理一个字符
putchar()将读取到的字符打印输出
C语言中自定义一个函数之前需在程序头部声明函数,声明时形式参数类型要给出