|

楼主 |
发表于 2011-4-27 16:22:39
|
显示全部楼层
C语言的变量,运算符,表达式语句
上次已经说了C中的变量。变量到底是什么东西?实际上它就是一个内存地址,假设我们用符号i表示一个变量,那也就是给它定下一个地址,那么这个变量是多少,随我们往这个地址里面加入的数据而定。特别要注意的是程序中,变量必须先声明,后使用。如同房客去住旅馆,得得先找大堂,要房间,然后方可入住。要不然里面已经住人,岂能容你强行闯入?定义的方法就是如下这样:(双斜杠右边都是注释文字仅仅其说明作用,不影响程序)
unsigned char i; //无符号字符型变量i:它只能是数,最小是0,最大是255
int k; //有符号整型变量k;
char ABC; //字符变量ABC,他可以是有符号数,也可以是单个字符
注意C的大小写不一样的,和basic不同。
有了变量,再加上运算符,意义就深入一步了:
i = 20; // 把20赋予变量i,这里=不是等于号,而是赋值号,这就是个使用最多的运算符。最后一定加上英语的分号;汉语的分号;可不行!规矩就是规矩。这么简单的一个式子,加上英语分号就是一个赋值语句了我再完整写一下:
unsigned char i; //先声明变量
i=20; //再给变量赋值,已经是一个表达式语句了
或者合二为一:
unsigned char i=20; //一边申明一边就赋值了,这也叫赋初值。
绝不可以还没声明呢就来赋值
m=20; //m是什么?没有声明,那谈何赋值呢
赋值运算符是用得最多的,给变量赋值以后还可以多次赋值。
还有算术运算符:+ - * / % (相除以后取余数)
自增自减运算符 ++ -- 是把变量加1或减1,例如unsigned char i=20; i++; 那么i就是21l了。
关系运算符:> >= < <= == != //==才是等于 !=是不等于,他们用来比较两个变量或算式。
逻辑运算符:|| && ! //逻辑 或 与 非
位运算符: ~ << >> & | ^ //位取反, 左移 右移 位与 位或 位异或
这个用得较多,举几个例子,当然都是对变量操作
unsih\gned char a=0XFE; //也就是2进数 0b 1111 1110
a=~a; //a位取反后再赋予a;各位0变1,1变0,相当于a变成0b 0000 0001.然后左移1位
a=a<<1; //最高位0移出去,最低位移进来1个0,a变成 0b 0000 0010,再左移2位
a=a<<2; //a变成 0b 0000 1000 注意移出去的就没有了,移进来的总是0然后位与0XFC
a=a&0XFC;//0XFC就是2进 0b 1111 1100; a原已是0b 0000 1000 结果a为 0b 0000 1000
a=a|0XC9; //就是0b 0000 1000和0b 1100 1001位或,结果a成了0b 1100 1001
a=a^0X78;//就是0b 1100 1001 和0b 0111 1000位异或,结果a变成0b 1011 0001
记住位反:1变0,0变1.。位与:11得1,10得0,00得0。位或11得1,10得1,00得0.。位异或:11得0,10得1,00得0.。
位运算使用较多,例如在8位数码管的依次显示,实际就是个移位操作例如用P2口控制
P2=0X01 ;// 最右端:秒个位亮
P2=0X02;//秒十位亮,个位灭
P2=0X04,;//分个位亮,秒十位灭,如果要点8个管,就要写8个语句,太累了!
也可以这样
unsigned char a=0x01;//
P2=a; //P2点亮秒个位
a=a<<1;
P2=a; //P2点亮秒十位,以后我们会通过循环操作就不要写8个句子了。 |
|