《ios零基础教程》 ---sizeof、关系运算符、逻辑运算和三目运算和流程控制if选择结构 2014-3-21总结
来源:互联网 发布:linux 总线 编辑:程序博客网 时间:2024/05/21 05:57
今天继续学习了基本运算中的sizeof、关系运算符、逻辑运算和三目运算和流程控制if选择结构。
一、sizeof
1、定义
sizeof 可以用来计算一个变量或者一个常量、一个数据类型所占的内存字节数。
2、sizeof一共3中形式:
1>sizeof(变量/常量)
2>sizeof变量/常量
3>sizeof(数据类型)
#include <stdio.h>int main(int argc, const char * argv[]){ //常量// int size = sizeof (10);// int size = sizeof 10.9; //变量// int a = 10;// int size = sizeof(a);// int size = sizeof a; //数据类型 int size = sizeof(char);// int size = sizeof char; //错误的写法 printf("size = %d\n",size); return 0;}
二、关系运算符
1、“真”、“假”
C语言中,条件成立称为“真”,条件不成立称为“假”,规定任何非0值都为“真”,只有0才为“假”,如-18、4.5、-10.5等都是“真”,0则是“假”。
#include <stdio.h>int main(int argc, const char * argv[]){ int a = 10; int b = 11; //条件成立就返回1,真 //条件不成立就返回0,假 //“== >= !="是比较a 和 b的值,然后将结果通过赋值运算符=返回给result// int result = b == a;//不成立,假,返回值0// int resilt = b >= a;//成立,真,返回值1 int result = b != a;//成立,真,返回值1 printf("%d\n",result); return 0;}
2、运算符优先级表
运算符的优先级(从高到低)
优先级
描述
运算符
1
括号
()、{}
2
正负号
+、--
3
自增自减、非
++、--、!
4
乘除、取余
*、/、%
5
加减
+、-
6
移位运算
<<、>>、>>>
7
大小关系
>、>=、<、<=
8
相等关系
==、!=
9
按位与
&
10
按位异或
^
11
按位或
|
12
逻辑与
&&
13
逻辑或
||
14
条件运算
?
15
赋值运算
= 、+=、-=、*=、/=、%=
16
位赋值运算
&=、<<=、>>=、>>>=
如果在程序中,要改变运算顺序,可以使用()。
三、逻辑运算
1、&& 逻辑与
1> 使用格式
“条件A && 条件B”
2> 运算结果
只有当条件A和条件B都成立时,结果才为1,也就是“真”;其余情况的结果都为0,也就是“假”。
3> 运算过程
如果条件A成立,接着再判断条件B是否成立
如果条件A不成立,就不会再去判断条件B是否成立
2、|| 逻辑或
1> 使用格式
“条件A || 条件B”
2> 运算结果
当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。
3> 运算过程
如果条件A成立,就不会再去判断条件B是否成立:因为条件A已经成立了,不管条件B如何,“条件A || 条件B”的结果肯定是1,也就是“真”
如果条件A不成立,接着再判断条件B是否成立。
3、! 逻辑非
1> 使用格式
“条件A || 条件B”
2> 运算结果
当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。
3> 运算过程
如果条件A成立,就不会再去判断条件B是否成立:因为条件A已经成立了,不管条件B如何,“条件A || 条件B”的结果肯定是1,也就是“真”
如果条件A不成立,接着再判断条件B是否成立
#include <stdio.h>int main(int argc, const char * argv[]){ //逻辑与 条件1 && 条件2 /* int a = 10; int b = 10; // int c = (a>5) && (++b>=11); //最后输出结果:a=10 ,b=11 ,c=1 int c = (a<5) && (++b>=11); //最后输出结果:a=10 ,b=10 ,c=0 //b=10 ,原因按位与&&符号之前(a<5)不成立,所以编译器直接忽略&&后面的运算过程 printf("a=%d, b=%d , c=%d\n",a , b ,c); */ //逻辑或 条件1 || 条件2 /*// int a = 0 || 11; int a = 10; int b = 10; int c = (a>5) || (b++ - 10); //最后输出结果:a=10 ,b=10 ,c=0 //b=10 ,原因按位或||符号之前(a>5)成立,满足条件了,所以编译器直接忽略||后面的运算过程 // int c = (a<5) || (b++ - 10); //最后输出结果:a=10 ,b=11 ,c=0 printf("a=%d, b=%d , c=%d\n",a , b ,c); */ //逻辑非 !条件 int a = !(10>8); //输出结果a=0; int b = !-10; //输出结果b=0; int c = !10>8; //输出结果c=0; int d = !!10; //输出结果d=1; printf("c = %d\n",d); return 0;}
四、三目运算符
C语言提供了唯一一个三目运算符:条件运算符。
1> 使用格式
表达式A ? 表达式B : 表达式C
2> 运算结果
如果表达式A成立,也就是为“真”,条件运算符的结果就是表达式B的值,否则,就为表达式C的值
#include <stdio.h>int main(int argc, const char * argv[]){ //三目运算符 条件 ? 数值1 : 数值2 /* int a = !100 ? 9 :89; printf("a = %d",a); */ //计算2个整数之间的最大值 /* int a = 10; int b = 99; int c = a>b ? a : b; printf("c is %d\n",c); */ //计算3个整数之间的最大值 int a = 10; int b = 99999; int c = 1000; //先求a、b之间的最大值 int abMax = (a>b) ? a : b; //再求出最终的最大值 int d = abMax > c ? abMax : c; //int d = (((a>b) ? a : b) > c) ? (((a>b) ? a : b) : c); //此方法不可取,可读性太差 printf("d is %d\n",d); return 0;}
五、 if 选择结构
1、if 的四种结构
/* 1.if的第1种结构 if(条件) { 语句1; 语句2; ........ } 2.if的第2种结构 if(条件) { 语句1; 语句2; ........ } else { } 3.if的第3种结构 if(条件1) { 语句1; 语句2; ........ } else if(条件2) { } else if(条件3) { } else { } 4.if的第4中结构 if(条件) 语句1; //只与这条语句有关系 */#include <stdio.h>int main(int argc, const char * argv[]){ /* // 人数 int count = 60; if (count >= 50) { printf("开班!!!\n"); printf("准备机器!!!\n"); } else { printf("不开班!!!\n"); printf("不准备机器!!!\n"); } */ /* int a = 6; if (a++ > 10) //a = 7 { printf("A\n"); } else if (a++ > 5) //a = 8,当程序满足这一步条件之后,就不再执行下一步条件 { printf("B\n"); } else if (a++ > 3) //a = 9 { printf("C\n"); } else { printf("D\n"); } */ int a = -10; if (a > 1) printf("A\n"); printf("B\n");//这条语句域if没有关系 return 0;}
2、if 机构使用注意事项
#include <stdio.h>int main(int argc, const char * argv[]){ // 1、直接输入0、1比较 if (0) //非0为真,0为假 { printf("A\n"); } else { printf("B\n"); } /* 2、比价大小时,常量值放左边,变量放右边 int a = 10; // if (a = 0) //这里是将0赋值给a,所以0为假,结果是a不等于0, if(0 == a) //为了避免上面的错误,所以这样写 { printf("a等于0\n"); } else { printf("a不等于0\n"); } */ /*// 3、注意赋值运算符,不要写成两个= int a = 10; a == 15; printf("%d\n",a); */ /*// 4、if()后面不要写; if ( 5 > 6); { printf("A\n"); } */ /*// 5、if用法中作用域问题 if (10 > 6) { int a = 5;//这里的a在定义结束之后就被释放消失 } printf("%d\n",a); */ /*// 6、下面代码是错误的,作用域不明确 if (10 > 6) int a = 5; */// printf("%d\n",a); return 0;}
3、练习题
1> 输入一个整数day代表星期几,根据day的值输出对应的星期几,比如day==1,就输入“星期一”
2> 输入一个整数month代表月份,根据月份输出对应的季节
春季:3、4、5
夏季:6、7、8
秋季:9、10、11
冬季:12、1、2
3> 输入一个整数score代表分数,根据分数输出等级(A-E)(用两种方式)
/*1.输入一个整数day代表星期几,根据day的值输出对应的星期几,比如day==1,就输入“星期一”#include <stdio.h>int main(int argc, const char * argv[]){ printf("输入一个整数day=="); int day; scanf("%d",&day); if (day == 1) { printf("星期一\n"); } else if (day == 2){ printf("星期二\n"); } else if (day == 3){ printf("星期三\n"); } else if (day == 4){ printf("星期四\n"); } else if (day == 5){ printf("星期五\n"); } else if (day == 6){ printf("星期六\n"); } else if (day == 7){ printf("星期七\n"); } else{ printf("这个数字不是星期数\n"); } return 0;}*//* 2.输入一个整数month代表月份,根据月份输出对应的季节 春季:3、4、5 夏季:6、7、8 秋季:9、10、11 冬季:12、1、2 #include <stdio.h>int main(int argc, const char * argv[]){ printf("输入一个整数month=="); int month; scanf("%d",&month); if (3 == month || 4 == month || 5 == month) { printf("春季\n"); } else if (6 == month || 7 == month || 8 == month){ printf("夏季\n"); } else if (9 == month || 10 == month || 11 == month){ printf("秋季\n"); } else if (12 == month || 1 == month || 2 == month){ printf("冬季\n"); } else{ printf("这个数字不是月份数\n"); } return 0;}*/// 3.输入一个整数score代表分数,根据分数输出等级(A-E)(用三种方式)//第三种方法:性能最好#include <stdio.h>int main(int argc, const char * argv[]){ printf("输入一个分数score=="); int score; scanf("%d",&score); if (100 >= score && 90 <= score) { printf("A\n"); } else if (80 <= score){ printf("B\n"); } else if (70 <= score){ printf("C\n"); } else if (60 <= score){ printf("D\n"); } else if (60 > score && 0 <= score){ printf("E\n"); } else{ printf("这个数字超出分数范围\n"); } return 0;} /*第二种方法:性能中等#include <stdio.h>int main(int argc, const char * argv[]){ printf("输入一个分数score=="); int score; scanf("%d",&score); if (100 >= score && 90 < score) { printf("A\n"); } else if (90 >= score && 80 < score){ printf("B\n"); } else if (80 >= score && 70 < score){ printf("C\n"); } else if (70 >= score && 60 <= score){ printf("D\n"); } else if (60 > score && 0 <= score){ printf("E\n"); } else{ printf("这个数字超出分数范围\n"); } return 0;} *//*第一种方法:性能最差#include <stdio.h>int main(int argc, const char * argv[]){ printf("输入一个分数score=="); int score; scanf("%d",&score); if (100 >= score && 90 < score) { printf("A\n"); } if (90 >= score && 80 < score){ printf("B\n"); } if (80 >= score && 70 < score){ printf("C\n"); } if (70 >= score && 60 <= score){ printf("D\n"); } if (60 > score && 0 <= score){ printf("E\n"); } else{ printf("这个数字超出分数范围\n"); } return 0;}*/
- 《ios零基础教程》 ---sizeof、关系运算符、逻辑运算和三目运算和流程控制if选择结构 2014-3-21总结
- Python的关系运算符逻辑运算符和流程控制
- ios开发-c语言之自增运算、sizeof、关系运算和逻辑运算的学习
- 逻辑运算和关系运算
- 练习使用关系运算符,逻辑运算符,和三目运算符。
- oracle 关系运算符和逻辑运算符
- Swift关系运算符和逻辑运算符
- C++关系运算和逻辑运算
- C++关系运算和逻辑运算
- [TwistedFate]bool类型,关系运算符,逻辑运算符,程序的三种结构,条件表达式,枚举类型,if,switch语句
- 逗号运算、关系运算、逻辑运算和条件运算
- Java学习基础:运算符和表达式(算数运算、关系运算、逻辑运算、位运算、条件运算、赋值运算)
- JAVA学习笔记之运算符和流程控制结构
- EL表达式的逻辑运算和关系运算
- Matlab的关系运算和逻辑运算
- [PowerShell入门]关系运算和逻辑运算
- 关系运算和逻辑运算的应用
- 关系运算和逻辑运算的应用
- 比jiu量
- java设计模式一 简单工厂模式
- 分解质因数 (vip)
- Cocos2D-x游戏开发之七:CCMoveBy CCJumpBy CCRotateBy CCAction CCRepeatForever
- 请简要描述客户端发送的http request header都包含哪些内容
- 《ios零基础教程》 ---sizeof、关系运算符、逻辑运算和三目运算和流程控制if选择结构 2014-3-21总结
- c语言 考研 复习
- 【编码】原码,反码,补码,移码
- 第二次练习
- android基础入门SeekBar和ProgressDialog(9)
- HDU 1865 1sting
- 这是第二个博客
- load balancing, affinity, persistence, sticky sessions: what you need to know
- 前++ 后++