c语言学习笔记7之基本运算符
来源:互联网 发布:苏宁秒杀软件哪个好 编辑:程序博客网 时间:2024/05/22 03:03
当我们有1之后就会产生2,继而产生之后的一些数字,由此产生了加减乘除的运算,c语言中的运算也包括这些,而且还产生了一些运算的变体。1.算数运算1)+、-、*2)/、%整数相除,取整数部分。11%5=商2,余1/和%不能对整数0进行操作,否则会中断程序。但是可以对浮点0进行操作,但是得到的结果是inf,表示无穷大。%不能对浮点数使用。/向零取整(取更接近0的数字)。%的结果与其左操作数的符号一致。2.赋值运算1)将赋值运算符右边的值付给左边的变量。// = int a;a = 5; // 将5赋给a2)赋值表达式的值就是赋值表达式左操作数的值。int a, b, c;a = b = c = 5; // a = (b = (c = 5));printf ("%d,%d,%d\n", a, b, c); // 5,5,53)赋值运算符的左操作数必须是一个左值——可被赋值的对象——变量,常量或表达式不能被赋值。100 = 200; // error100 = a; // errora + b = c; // error4)赋值运算符是“=”而不是“==”。5)赋值运算符还可和其它运算符结合起来使用,构成复合赋值。a += b; // a = a + ba %= b; // a = a % b6)初始化与赋值是不同的。int a = 10; // 初始化 //int a;a = 100; // 赋值3.自增减运算1)++/--:变量自增/减1。int a = 10;a++; // a:11a--; // a:10++a; // a:11--a; // a:102)不能用于常量。10++; // error--10; // error3)可以用于所有的整型类变量,以及浮点类,但是多数情况下用于int。4)前后缀自增减的区别:前缀:先自增减,在计算表达式。++a后缀:先计算表达式,再自增减。a++a++表达式和++a表达式的值都是从操作数a的内存空间中得到的。二者的区别在于,一个是先取表达式的值再自增,另一个是先自增在取表达式的值。5)忠告:自增减运算最好不要在一个表达式中使用多次。1.关系运算>/>=/</<=/==/!=关系运算表达式的值是整数:1或者0。逻辑真:12.逻辑运算1)逻辑与(&&)、逻辑或(||)、逻辑非(!)A && B:只有当A和B的值都为真(非零)时,表达式的值才为真。A || B:只有当A和B的值都为假(零)时,表达式的值才为假。! A:当A的值为真时,表达式的值为假,当A为假时,表达式的值为真。2)短路运算A && B:如果A的值为假,则B不处理。A || B:如果A的值为真,则B不处理。3.位运算1)位与(&)/位或(|)/位异或(^)/位反(~)位与:参与运算的两位都是1结果为1,否则为0。位与可以置某一位为0,也可以得到某一位的值。 10110001 A 11101111 B&)----------- 10100001 C ^ 10110001 A 00010000 B&)----------- 若A&B==B,则A中此位为1 00010000 C ^位或:参与运算的两位都是0结果为0,否则为1。位或可以置某一位为1,也可以得到某一位的值。 10100001 A 00010000 B|)------------ 10110001 C ^ 10100001 A 11101111 B|)------------ 若A|B==B,则A中此位为0 11101111 ^异或:参与运算的两位相异为1,相同为0。异或可以翻转某一位,想翻哪位哪位就是1,其余为0。 10101010 A 00100100 B^)------------ 10001110 C ^ ^A^B->CC^B->AC^A->B异或还可用于在不增加第三变量的前提下,交换两个变量的值。int a = 100, b = 200;int c = a;a = b;b = c;--------------------a : 1011 11b : 0110 6a = a ^ b; // a : 1101 13b = a ^ b; // b : 1011 11a = a ^ b; // a : 0110 6位反:按位取反 01100001~)----------- 100111102)左右移位A.有符号数:左移补零,右移补符10101010 << 1 -> 01010100-86 -17210101010 >> 1 -> 11010101-86 -43B.无符号数:左移右移全补零10101010 << 1 -> 01010100170 8410101010 >> 1 -> 01010101170 85在不发生溢出的情况下,左移一位即乘2,右移一位即除2。00000010 << 1 -> 000001002 4int main(){int sec;int h,m,s;printf("请您输入一个秒数:");scanf("%d",&sec);if(sec<=0){printf("时间不存在零或负数!");return 0;} h=sec/3600; m=sec%3600/60; s=sec%60; printf("%2dh:%2dm:%2ds:\n",h,m,s);return 0;}
0 0
- c语言学习笔记7之基本运算符
- 黑马程序员--C语言学习笔记之运算符
- 黑马程序员----C语言学习笔记之运算符2
- 黑马程序员----C 语言学习笔记之位运算符
- 【黑马程序员】C语言学习笔记之基本运算(七)
- C语言学习-基本运算
- C语言学习笔记之基本数据类型
- 【C语言学习笔记】基础语法及基本运算
- 小白学习c语言之基本数据类型,运算符,基本语句
- C语言基础学习运算符-基本算术运算符
- 黑马程序员IOS基础---C语言学习之基本运算
- C语言学习笔记(运算符)
- C语言笔记--代码学习笔记--C语言语法--基本操作运算-basic-logorithm
- 黑马程序员-C语言学习日记一之基本运算符学习小结
- C语言学习笔记之位运算求余
- Swift学习笔记之基本数据类型-基本运算符
- <<C语言深度剖析>>学习笔记之四:预运算符
- C语言基本运算
- (OK) scratch/manet-docker.cc
- 聊聊 Linux 中的五种 IO 模型
- javascript中定时器的使用
- 埃及分数问题
- 百度之星2016资格赛 D
- c语言学习笔记7之基本运算符
- 《java入门第一季》集合框架引入与面试题
- Linux驱动体现的编程思想---面向对象的编程思想
- 2016/5/15
- gethostbyname获取本机IP
- 【SCTF&&CCTF 2016】 PWN_WRITEUP
- Android学习之BottomNavigationBar实现Android特色底部导航栏
- Android 学习记录-加载器
- 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)