Linux基本命令,vi编译器的使用,简单的编程步骤,程序语言,gcc编译器编译过程,进制转换
相关知识可以查看文档http://t.csdnimg.cn/CmqhC
数值表示,词法符号,变量,常量相关知识可以查看文档http://t.csdnimg.cn/jJIe2
目录
垃圾字符问题:只要第二次想输入char类型就会接收上次的回车
一、运算符和表达式:
表达式是指由运算符、运算量和标点符号组成的有效序列,目的是用来说明一个计算过程。
1.算术运算符:+,-,*,/,%,++,--
(1)/: 整数相除,向下取整
(2)%: 只能用于整数运算,取余
例如:10%3 = 1
(3)++: 自增 -- :自减
printf("%d\n",a++); //++在后,先打印,再自加
//先执行printf("%d\n",a); 再执行a=a+1;
printf("%d\n",++a); //++在前,先自加,再打印
//先执行a=a+1; 再执行printf("%d\n",a);
2.赋值运算符: =,+=,-+,*=,/=
(1)int b = ++a; //先自加然后再赋值
相当于:先执行a=a+1; 再执行 b=a;
(2)int b= a++; //先赋值再自加
相当于: 先执行 b=a; 再执行 a=a+1;
(3)a+=2;
相当于:a=a+2;
3.关系运算符:>,<,<=,>=,==,!=
用来判断两者的关系,返回1或0。
< 小于 a<b a小于b时返回真,否则返回假
<= 小于等于 a<=b a小于等于b时返回真,否则返回假
> 大于 a>b a大于b时返回真,否则返回假
>= 大于等于 a>=b a大于等于b时返回真,否则返回假
== 等于 a==b a等于b时返回真,否则返回假
!= 不等于 a!=b a不等于b时返回真,否则返回假
4.逻辑运算符:&&,||,!
非0代表真,0代表假
(1)&&(逻辑与)
全真则真,一假则假。全是真的才是真,只要有假就是假。
(2)||(逻辑或)
一真则真,全假则假。只要有真的就是真,全都是假的才是假。
(3)!(逻辑非)
非真为假,非假为真
(4)短路法则/截断法则
||(逻辑或)运算中: 如果前面的表达式为真,则后面的表达式不执行。
&&(逻辑与)运算中: 如果前面的表达式为假,则后面的表达式不执行。
5.位运算符:&,|,^,~,<<,>>,
(1)&(位与)
全一则一,有零则零
例如:1111 0101 & 1111 1101 = 1111 0101
(2)|(位或)
有一则一,全零则零
例如:1111 0101 | 1111 1101 = 1111 1101
(3)^(异或)
不同为一,相同为零
例如:1111 0101 ^ 1111 1101 = 0000 1000
(4)~(取反)
按位取反,零变成一,一变成零
例如:~ 0111 0101 = 1000 1010
~15:
正数原码:0000 1111
正数补码:0000 1111
取反~:1111 0000
~-1:
负数原码:1000 0001
负数反码:1111 1110
负数补码:1111 1111
取反~:0000 0000
(5)<<(左移)
左移几位,右边就补几个零
例如:计算 -5 << 3 = -40
-5的原码:1000 0101;反码:1111 1010;补码:1111 1011;<< 3左移三位以后:补码为:1101 1000,转换为反码为1101 0111,转换为原码为1010 1000,对应的值为-40
(6)>>(右移)
右移几位,左边就补几个符号位,整数补0,负数补1
例如:计算 -5 >> 3 = -1
-5的原码:1000 0101;反码:1111 1010;补码:1111 1011;>> 3右移三位以后:补码为:1111 1111,转换为反码为1111 1110,转换为原码为1000 0001,对应的值为-1
(7)置一公式和置零公式
置一公式:a | (1<<n)
置零公式:a & (~(1<<n))
6.特殊运算符:
(1)三目运算符
格式:表达式1 ? 表达式2 : 表达式3
运算法则:先判断表达式1是否成立,如果成立执行表达式2,否则执行表达式3;
(2)sizeof( )
格式:sizeof(数据类型或变量名);
7.运算优先级:
单算移关与,异或逻条赋,从右向左单条赋
单目运算符 ! ~ ++ --
算术运算符 * / + -
移位运算符 << >>
关系运算符 < <= > >= == !=
位与运算符 &
异或运算符 ^ |
逻辑运算符 && ||
条件运算符 ? :
赋值运算符 = -= += *= /= %=
二、输入输出
三要素:功能,参数,返回值
1.按字符输入输出
(1)按字符输出 putchar()
格式:int putchar(int c);
功能:向终端输出一个字符
参数c:要输出字符的ASCII值或者’字符‘
返回值:要输出字符的ASCII值
(2)按字符输入 getchar()
格式:int getchar(void);
功能:从终端输入一个字符
参数:无
返回值:输入字符的ASCII值。
2.按格式输入输出
(1)按格式输出printf()
int printf(const char *format, ...);
功能:按照指定格式向终端输出
参数format:用双引号括起来的格式控制串和输出表。
返回值:输出字符的个数
格式:printf("格式控制串",输出表)
格式控制串:包含两种信息
1.普通字符:原样输出
2.格式说明:修饰符%后面加格式字符,用于指定输出格式
输出表:要输出的数据,可以没有;也可以多个,用逗号分隔
格式字符:
%d int
%ld long
%f float
%lf long
%c char
%s 字符串
%x 十六进制
%o 八进制
%u 十进制无符号整数
%p 地址
%e 指数
%m.n含义:
.n:对实数指定小数点后的位数(四舍五入)
对字符串指定输出的位数
m:位宽,输出数据的域宽,数据长度<m,左边补空格,否则按实际输出
-:左对齐,默认右对齐
0:输出数值时指定左边不用的空位置自动补0
(2)按格式输入scanf()
int scanf(const char *format, ...);
功能:按格式从终端输入
参数:同printf
返回值:正确输入数据的个数。当第一个数输入格式不正确时,会直接返回0。
格式:scanf("格式控制串", 地址表);
地址表:变量的地址,常用取地址运算符&
垃圾字符问题:只要第二次想输入char类型就会接收上次的回车
注意:scanf函数输入回车符的问题,当用%c方式输入字符时,回车符会被下次的%c接收到。
其他给格式不会出现这种问题。
回收垃圾字符方法:
1.利用空格,可以回收一个或多个空格、回车和tab
2.利用%*c,只能回收任意一个字符
3.利用getchar( ),只能回收任意一个字符,一般用于循环里面