类型.运算符.表达式
变量名
1. 名字是由字母和数字组成,第一个字符必须是字母,下划线”_”被认为是字母
2. 大小写字母有区别,变量名用小写,符合常量全部使用大写字母
3. 变量名不要以”_”开头,为了提高可读性,以“字母_字母”为好
数据类型和长度
1. Char字符型:占用一个字节
2. Int整型:反映机器中整数类型的自然长度
3. Float类型:单精度浮点类型
4. Double类型:双精度浮点类型
5. Short int si;
6. Long int li;
Short类型通常是16位,long类型通常是32位,int类型可以是16位或者32位
在位数上:Short<int<long
Signed和unsigned,限定任何整型和char类型,unsigned类型的数总是正的或者0
Long double类型表示高精度浮点数
常量
1. int类型常量:3344
2. long类型常量:9876654321L
3. 无符号常量以字母u或者U结尾
4. 浮点数常量:89.89
进制问题
整数类型表示:35--10进制(35),8进制(035),16进制(0x1f),
字符常量
1. 一个字符常量就是一个整数
2. 字符常量也叫字符串字面值,也就是字符序列,”hello”, ””等等;‘x’这是整数,”x”字符
声明变量
所有变量必须先声明后使用,声明变量会规定变量的类型,
Int lw1,lw2,lw3; <====>int lw1; int lw2; int lw3;
声明变量初始化
int i = 22;
char c=’h’;
如果不是自动变量,则变量只能初始化一次,也可以使用const修饰,表示该变量不可以被修改,const修饰的数组元素也都不可以被修改:
const int i=33;
const double d=3.14;
const char msg[]=’hello’;
运算符
算术运算符
+ |
- |
* |
/ |
% |
++ |
-- |
整数相除,不能整除会对小数部分进行截取
#include <stdio.h> int main() { /* 除号运算 */ int i=10,j=3; int res=i/j; int res2=i%j; printf("%d,----,%d",res,res2); return 0; } |
关系运算符
== |
!= |
<= |
>= |
< |
> |
关系运算符的优先级低于算术运算符
#include <stdio.h> main() { int a = 20; int b = 10; int c ; if( a == b ) { printf("Line 1 : a 等于 b\n" ); } else { printf("Line 1 : a 不等于 b\n" ); } if ( a < b ) { printf("Line 2 : a 小于 b\n" ); } else { printf("Line 2 : a 不小于 b\n" ); } if ( a > b ) { printf("Line 3 : a 大于 b\n" ); } else { printf("Line 3 : a 不大于 b\n" ); } /* 改变 a 和 b 的值 */ a = 10; b = 20; if ( a <= b ) { printf("Line 4 : a 小于或等于 b\n" ); } if ( b >= a ) { printf("Line 5 : b 大于或等于 b\n" ); } } |
Line 1 : a 不等于 b Line 2 : a 不小于 b Line 3 : a 大于 b Line 4 : a 小于或等于 b Line 5 : b 大于或等于 b |
逻辑运算符
假设A为真,B为假
&& |
称为逻辑与运算符。如果两个操作数都为真,则条件为真。 |
(A && B) 为假。 |
|| |
称为逻辑或运算符。如果两个操作数中有任意一个非假,则条件为真。 |
(A || B) 为真。 |
! |
称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 |
!(A && B) 为真。 |
#include <stdio.h> main() { int a = 5; int b = 20; int c ; if ( a && b ) { printf("Line 1 - 条件为真\n" ); } if ( a || b ) { printf("Line 2 - 条件为真\n" ); } /* 改变 a 和 b 的值 */ a = 0; b = 10; if ( a && b ) { printf("Line 3 - 条件为真\n" ); } else { printf("Line 3 - 条件不为真\n" ); } if ( !(a && b) ) { printf("Line 4 - 条件为真\n" ); } } |
赋值运算符
= |
简单的赋值运算符,把右边操作数的值赋给左边操作数 |
C = A + B将把 A + B 的值赋给 C |
+= |
加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 |
C += A 相当于 C = C + A |
-= |
减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 |
C -= A 相当于 C = C - A |
*= |
乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 |
C *= A 相当于 C = C * A |
/= |
除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 |
C /= A 相当于 C = C / A |
%= |
求模且赋值运算符,求两个操作数的模赋值给左边操作数 |
C %= A 相当于 C = C % A |
<<= |
左移且赋值运算符 |
C <<= 2 等同于 C = C << 2 |
>>= |
右移且赋值运算符 |
C >>= 2 等同于 C = C >> 2 |
&= |
按位与且赋值运算符 |
C &= 2 等同于 C = C & 2 |
^= |
按位异或且赋值运算符 |
C ^= 2 等同于 C = C ^ 2 |
|= |
按位或且赋值运算符 |
C |= 2 等同于 C = C | 2 |
杂项运算符
sizeof() |
返回变量的大小。 |
sizeof(a)将返回 4,其中 a是整数。 |
& |
返回变量的地址。 |
&a; 将给出变量的实际地址。 |
* |
指向一个变量。 |
*a; 将指向一个变量。 |
? : |
条件表达式 |
如果条件为真 ?则值为 X : 否则值为 Y |
表达式
赋值表达式
a = a+2; <==> a+=2;
x* = y+2; <==> x = x*(y+2);
条件表达式
if(a>b);
c=a;
else
c=b;
这里<==> c = (a>b)?a:b;
#include <stdio.h> int max(int a,int b); int main() { int a=1,b=2,c; c=max(a,b); printf("%d",c);
return 0; } int max(int a,int b){ if(a>b) return a; else return b; } |
优先级问题
后缀 |
() [] -> . ++ - - |
从左到右 |
一元 |
+ - ! ~ ++ - - (type)* & sizeof |
从右到左 |
乘除 |
* / % |
从左到右 |
加减 |
+ - |
从左到右 |
移位 |
<< >> |
从左到右 |
关系 |
< <= > >= |
从左到右 |
相等 |
== != |
从左到右 |
位与 AND |
& |
从左到右 |
位异或 XOR |
^ |
从左到右 |
位或 OR |
| |
从左到右 |
逻辑与 AND |
&& |
从左到右 |
逻辑或 OR |
|| |
从左到右 |
条件 |
?: |
从右到左 |
赋值 |
= += -= *= /= %=>>= <<= &= ^= |= |
从右到左 |
逗号 |
, |
从左到右 |