2.2 常见的数据类型及长度
Char 字符型 占用一个字节
Int 整形 通常反应了所用机器中整数的最自然长度 还可以扩展 short long
Float 单精度浮点数
Double 双精度浮点数
类型限定符 signed(有符号) 与 unsigned (无符号 正数或者0 )可用于限定char类型或任何整数
2.3 常量
浮点数常量包含一个小数点。
Double 使用 64 位(8字节) 来储存一个浮点数。 它可以表示十进制的15或16位有效数字。
Float 32位单精度浮点型 float类型的精度比double型的低,由位数可知,float类型的范围比double类型小。
一个字符常量是一个整数 例如 ‘x‘ 的数字就是字符常量的值 ’\0‘表示值为0的字符
’x‘ “x”表示的是不同的, 前者是一个整数 后者是一个包含一个字符以及一个结束符’\0‘的字符数组。
特别区别 char *a =”abc” char a[]=”abc”,
Char a[] 声明了一个字符型数组,并赋初值。
Char *a 声明一个字符指针 也可以这样表示
char *a;
char b[]="abc";
a=&b[0];
2.4 声明
所有变量都是必须先声明后使用
Int lower;
Int upper;
Int step;
Const double e = 3.1415926 该限定符指定变量的值不能被修改 对于数组而言 const限定符指定数组所有元素的值不能被修改
2.5 算术运算符
二元算术运算符包括: + .- * / %(取模运算符) 整数除法会截断结果中的小数部分。 表达式 x % y。
取模运算符 % 不能应用在float double
2.6 关系运算符与逻辑运算符
关系运算符:
> >= < <=
相等性运算符:
== !=
逻辑运算符
&&(与) ||(或)
优先级 相等性运算符>关系运算符> 逻辑运算符
2.7 类型转换
当运算符的几个操作数类型不同时,需要转化为共同的类型
一般是把“比较窄的” 操作数转换为“比较宽的”操作数 并且不丢失信息的转换
如果没有unsigned类型的操作数:
如果其中一个操作数类型为long double 则将另一个操作数转换为long double
如果其中一个操作数的类型为double 则将另一个操作数转换为doule
如果其中一个操作数的类型为float, 则将我另外一个操作数转化为float
将char 和short 类型的操作数 转化为Int
同long->long;
赋值时也要进行类型转换。 赋值运算符右边的值需要转换为左边变量的类型。
2.8自增运算符与自减运算符
例子1
Int n = 5;
X = n++ // x 的值为 5
X = ++n // x 的值为6
例子2
// 从字符串中删除字符C
Void squeeze (char s[], int c)
{
Int i , j ;
For( i = j = 0; s[i] != ‘\0’: i++)
If(s[i] != c)
S[j++] = s[i];
S[j] = ‘\0’;
}
}
2.10 赋值运算符与表达式
I = i + 2 等同 i +=2;
2.11 条件表达式
Expr1 ? Expr2 : expr3
如果表达式1为真 则为选择exp2 反之选择expr3
例子:
For(int i = 0; i < n; i++)
Print(“%6d%c”,a[i], (i%10 == 9 || i = n-1) ? ’\n‘:’ ’);