《ios零基础教程》 ---sizeof、关系运算符、逻辑运算和三目运算和流程控制if选择结构 2014-3-21总结


今天继续学习了基本运算中的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代表月份,根据月份输出对应的季节

 春季:345

 夏季:678

 秋季:91011

 冬季:1212


 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;
}
*/



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值