1.基本数据类型
2.常量
a.整型常量,也就是整常数。
1.十进制整数。如356,-120,0。
2.八进制整数。八进制形式的常量都以0开头,如0123,也就是十进制的83;-011,也就是十进制的-9。
3.十六进制整数。十六进制的常量都是以0x开头,如0x123,就是十进制的291
b.实型常量。
1.十进制小数形式。这个我们应该很熟悉了,小学就学了的,不过注意:0.0也是实型常量。
2. 指数形式。上过初中的都应该知道科学计数法吧,指数形式的常量就是科学计数法的另一种表示,比如123000,用科学计数法表示为1.23×10的5次 方,用C语言表示就是1.23e5或1.23E5,注意e或E的前面必须要有数字,而且e或E后面的数字一定要是整数。
c.字符型常量。
1.一般形式。一个字符用''括起来,注意只能有一个字符。
2.特殊形式。特殊形式都是以\开头,它们在屏幕上不会直接显示出来,而是根据其特定的功能来显示的,这些特殊字符常量有:
\n换行,相当于敲一下回车。
\t跳到下一个tab位置,相当于按一下键盘上的tab键。
\b退格,相当于按一下backspace。
\r使光标回到本行开头。
\f换页,光标移到到下页开头。
\\输出\字符,也就是在屏幕上显示一个\字符。
\'输出'字符,也就是在屏幕上显示一个'字符。
\"输出"字符,也就是在屏幕上显示一个"字符。
\ddd1位到3位八进制数表示的字符。
例如:使用'\376',则在屏幕上显示一个黑色的方块。
\xhh1位到2位十六进制数表示的字符。注意x不能丢了。
d.字符串常量,注意字符串常量和字符型常量是不一样的。
字符串常量与字符常量不同的地方是,字符串常量是用""把字符串括起来,所以'a'和"a"是不一样的,而且系统会在字符串常量的末尾自动加一个字符串结束标志('\0')。
3.C语言中的运算符
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
左到右
()
圆括号
(表达式)/函数名(形参表)
.
成员选择(对象)
对象.成员名
->
成员选择(指针)
对象指针->成员名
2
-
负号运算符
-表达式
右到左
单目运算符
(类型)
强制类型转换
(数据类型)表达式
++
自增运算符
++变量名/变量名++
单目运算符
--
自减运算符
--变量名/变量名--
单目运算符
*
取值运算符
*指针变量
单目运算符
&
取地址运算符
&变量名
单目运算符
!
逻辑非运算符
!表达式
单目运算符
~
按位取反运算符
~表达式
单目运算符
sizeof
长度运算符
sizeof(表达式)
3
/
除
表达式/表达式
左到右
双目运算符
*
乘
表达式*表达式
双目运算符
%
余数(取模)
整型表达式/整型表达式
双目运算符
4
+
加
表达式+表达式
左到右
双目运算符
-
减
表达式-表达式
双目运算符
5
<<
左移
变量<<表达式
左到右
双目运算符
>>
右移
变量>>表达式
双目运算符
6
>
大于
表达式>表达式
左到右
双目运算符
>=
大于等于
表达式>=表达式
双目运算符
<
小于
表达式<表达式
双目运算符
<=
小于等于
表达式<=表达式
双目运算符
7
==
等于
表达式==表达式
左到右
双目运算符
!=
不等于
表达式!= 表达式
双目运算符
8
&
按位与
表达式&表达式
左到右
双目运算符
9
^
按位异或
表达式^表达式
左到右
双目运算符
10
|
按位或
表达式|表达式
左到右
双目运算符
11
&&
逻辑与
表达式&&表达式
左到右
双目运算符
12
||
逻辑或
表达式||表达式
左到右
双目运算符
13
?:
条件运算符
表达式1? 表达式2: 表达式3
右到左
三目运算符
14
=
赋值运算符
变量=表达式
右到左
/=
除后赋值
变量/=表达式
*=
乘后赋值
变量*=表达式
%=
取模后赋值
变量%=表达式
+=
加后赋值
变量+=表达式
-=
减后赋值
变量-=表达式
<<=
左移后赋值
变量<<=表达式
>>=
右移后赋值
变量>>=表达式
&=
按位与后赋值
变量&=表达式
^=
按位异或后赋值
变量^=表达式
|=
按位或后赋值
变量|=表达式
15
,
逗号运算符
表达式,表达式,…
左到右
从左向右顺序运算
说明:
同一优先级的运算符,运算次序由结合方向所决定。
由于C语言中运算符多,优先级复杂,难以记忆,针对上述运算符,我们可以归纳成几名口诀,以便于记忆:
优先级口诀
括号成员第一; 括号运算符[]() 成员运算符. ->
全体单目第二; 所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
乘除余三,加减四; 这个"余"是指取余运算即%
移位五,关系六; 移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; 即== !=
位与异或和位或; 这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; 逻辑运算符:|| 和 &&
十二和十一; 注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, 三目运算符优先级排到 13 位只比赋值运算符和","高
逗号运算级最低! 逗号运算符优先级最低
4.标准的输入输出使用(使用格式化输入输出)
/*标准输入输入*/#includeint main(void){ char c; //定义一个字符变量 printf("输入一个字符:");//输出函数printf(); scanf("%c",&c); //输入函数scanf(); printf("你输入的字符是%c\n",c);}
5.C语言类型转换
a.自动类型转换
(1). 在表达式中,char 和 short 类型的值,无论有符号还是无符号,都会自动转换成 int 或者 unsigned int(如果 short 的大小和 int 一样,unsigned short 的表示范围就大于 int,在这种情况下,unsigned short 被转换成 unsigned int)。因为它们被转换成表示范围更大的类型,故而把这种转换称为“升级(promotion)”。
(2). 按照从高到低的顺序给各种数据类型分等级,依次为:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。这里有一个小小的例外,如果 long 和 int 大小相同,则 unsigned int 的等级应位于 long 之上。char 和 short 并没有出现于这个等级列表,是因为它们应该已经被升级成了 int 或者 unsigned int。
(3). 在任何涉及两种数据类型的操作中,它们之间等级较低的类型会被转换成等级较高的类型。
(4). 在赋值语句中,= 右边的值在赋予 = 左边的变量之前,首先要将右边的值的数据类型转换成左边变量的类型。也就是说,左边变量是什么数据类型,右边的值就要转换成什么数据类型的值。这个过程可 能导致右边的值的类型升级,也可能导致其类型降级(demotion)。所谓“降级”,是指等级较高的类型被转换成等级较低的类型。
(5). 作为参数传递给函数时,char 和 short 会被转换成 int,float 会被转换成 double。使用函数原型可以避免这种自动升级。
b.强制类型转换
格式 (type) 表达式; type表示数据类型。 例:double m=1.6+1.7; 和 double m=(int) 1.6+(int)1.7;前者结果为3.300000,后者为2.00000;
6. 流程控制语句
a.选择语句:选择语句有if语句和switch语句两种。
/*流程控制语句*/#includeint main(void){ int age=18; if(age==18){ printf("条件成立\n"); }else{ printf("条件不成立\n"); } switch(age){ /*如果不用break执行这句表达式后会继续执行case 30: 直到遇到break才跳车switch语句,否则一直运行到switch语句结束*/ case 18: printf("age=18执行\n");break; case 30: printf("age=30执行\n");break; }} b.循环语句:循环语句有for、while和do_while三种。
/*循环语句*/#includewhile 和do while区别在是while是先进行逻辑判断在确定是否执行循环体,int main(void){ int i; int sum=0; for(i=0;i<=50;i++){ sum=sum+i; } printf("0+1+......+50=%d\n",sum); while(i<=100){ sum+=i; i++; } printf("0+1+.....+100=%d\n",sum); do{ sum+=i; i++; }while(i<=150); printf("0+1+.....+150=%d\n",sum);} do while是先循环体执行一次在进行判断是否继续执行。
c.转移语句: 转移语句有break、continue、return和goto四种,它们都能改变程序原来执行顺序并转移到其它位置继续执行。