一、数据类型
1、整型
- 十进制整型常量:0~9,如-56
- 八进制整型常量:0~7;以数字0开头,如-034,045
- 十六进制整型常量:0~9,A~F或a~f;以数字0开头加上字母x开头, 如-0xFF
2、字符型
- 字符常量:用单引号括起来的单个可视字符或转义字符,在内存中占一个字节的存储空间,存放的是其ASCII码值,如'a','S',a的ASCII码值为97,字符‘A’的ASCII码值为65.ASCII码表见文章末尾。“\”是转义的意思
// ddd(三个八进制) xddd(3个十六进制)
printf("%c",'\103'); //67
转义字符如下所示
- 字符串常量:用一对双引号括起来的若干字符序列。如,“a”;“123”
字符串中字符的个数称为字符串长度。空格也是一个字符。“Hello\"”的长度为6(转义字符\“代表一个字符”), “co\123n\n4\\14\tk\bw\xc”的长度为14(转义字符有\123、\n、\\、\t、\b、\xc)其中\xc表示16进制,\123是八进制。
系统在存放字符串时,会在串的结尾自动添加一个字符串结束标志“\0”
将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。
数据类型:
(int)(x+y); //将表达式x+y的值转换为int类型
(int)x+y; //将x的值转换为int类型,再与y相加
算术运算符:
%求余数:运算 对象都是整数(两个都是整数)
/除法运算符:参与运算量2均为整型时,结果为整型,舍去小数。5/3=1,5.0/2=2.500000
int a=3,b=5;
(a++)+b //表达式结果为8,a的值为4,b的值不变
(++a)+b //表达式结果为9,a的值为4,b的值不变
赋值运算符:
变量标识符=常量或常量表达式 //结合方向:从右向左
a=b=c=10等价于a=(b=(c=10))
int a=b=c=10; //是错误的
int a=10,b=10,c=10; //正确的,
注意:同一种类型的变量在定义时可以一起定义,需要用逗号分隔开,但如果定义的同时用同一个值进行赋值,即进行初始化,系统要求分别赋值。
位运算只能整型
a=b=c=3;
a=6+(b=2) ; //表达式值为8,a值为8,b的值为2
a=(b=4)+(c=6); //表达式值为10,a值为10,b等于4,c等于6
逗号运算符
表达式1,表达式2,……,表达式n
结合方向从左往右
逗号表达式从左往右按顺序依次求出各表达式的值,并把最后一个表达式的值作为整个逗号表达式的值
#include <stdio.h>
void main()
{
int x;
printf("%d,%d\n",x=2*4,x*10); //8,80
printf("%d\n",x=2*4,x*10); //8
printf("%d\n",(x=2*4,x*10)); //80
}
int n1=1,n2=2,n3=3,n4=4,x,y;
(x=n1>n2)&&(y=n3>n4) ; //x=0;y=6
int x=2,y=2,z=3;
z=(x>y)?z:y //z=2
int i=4,j=5,m;
m=4+((i++>3)&&(i%2)+i/j;
上式中i++>3时i=4, i%2时i=5 ,4+((i++>3)&&(i%2)为5,i/j=1(5/5) ,最后表达式的值为m=6
运算符优先级