C语言学习记录——基础语法(3)

实现C语言分支结构,要学习关系表达式,逻辑表达式,以及语句

一、运算符

 我们写代码设计程序就是为了知道计算机如何对数据进行加工处理,得到我们想要的结果。C语言通过提供运算符来支持我们对数据进行处理。

1.算术运算符

双目:表示有两个操作数 

  • 表达式:用运算符和括号将操作数连接起来的式子,例如:‘a' +'b' 、1+1 、a+b
  • 运算符的优先级和综合性

 

 运算符的优先级和结合性,《带你学C带你飞》(语法篇),C\C++交流,鱼C论坛 - Powered by Discuz! 运算符的优先级和结合性 icon-default.png?t=N7T8https://fishc.com.cn/thread-67664-1-1.html

  •  类型转换(在一个运算符中,操作数的类型不同,通常计算机会将占用位小的数据类型转化为占用位多的数据类型——确保计算精度)例如:浮点数+整型=浮点数

注1:printf函数后面不仅可以放变量,数值,也可以直接放一个表达式

printf("整型输出:%d\n", 1+ 2.0);

注2:由于类型转换,因此在设置输出格式时需要注意,如果浮点数以整型的形式输出则会有错误结果。

#include <stdio.h>
  2 #include <math.h>
  3 int main()
  4 {
  5         printf("整型输出:%d\n",1 + 2.0);
  6         printf("浮点型输出:%f\n",1+2.0);
  7 
  8 
  9 
 10         return 0;
 11 }

 运行结果:

 

 注3:除了计算机可以自动转换操作数的数据类型,自己可以强制转换操作数的数据类型

printf("整型输出:%d\n", 1+ (int)2.0);

 注4:int(1.8)——将浮点数1.8转换为整数是直接去掉小数位,而不是四舍五入

2.关系运算符

  • 关系运算符来比较两个数的大小关系

关系运算符得到的结果是一个逻辑值只有两个,一个真(1)一个假(0)

  • 关系表达式:用关系运算符将两边的变量、数据或者表达式连接起来
    1 < 2
    a > b // 这里的a,b表示的是变量
    'a' + 'b' <= 'c' //字符在编译系统中解释为十进制的ASCII码

 3.逻辑运算符

需要同时对两个或者两个以上的关系表达式进行判断,需要用到逻辑表达式

 

  • 逻辑表达式:,用逻辑运算符将两边的变量,数据或者表达式连接起来(结果0或者1)

 4.短路求值

短路求值又称为最小化求值,是一种逻辑运算符的求值策略。只有当第一个运算数的值无法确定逻辑运算结果时,才最第二个操作数进行求值

#include <stdio.h>
  2 int main()
  3 {
  4         int a = 3, b= 3;
  5         (a=0) && (b=5);
  6         printf("a = %d, b = %d\n", a, b);
  7         (a=1) || (b=5);
  8         printf("a = %d, b = %d\n", a, b);
  9 
 10 
 11 
 12         return 0;
 13 }

运行结果:

注:表达式一定会返回一个值,关系表达式和逻辑表达式返回的都是一个逻辑值,表达值为真,则返回1,表达值为假则会返回0

二.if语句

if语句括号里的表达式,只需要判断其值为1还是0

1.第一种

 2.第二种

 3.第三种

三.switch语句 (非常重要)

 switch语句旁边的表达式,其算出来的值,判断其满足case后面的哪个表达式,如果都不满足,实行default

注:case后面的语句最后要加一个break;

1.悬挂else(会出bug)

 

#include <stdio.h>
  2 int main()
  3 {
  4         char rain, free;
  5         printf("是否有空(Y/N)");
  6         scanf("%c",&free);
  7         getchar();//可以读取空格等一个字符,这里相当于过滤掉空格
  8         printf("是否下雨(Y/N)");
  9         scanf("%c",&rain);
 10 
 11         if(free == 'Y')
 12                 if(rain =='Y')
 13                         printf("记得带伞!\n");
 14 
 15         else
 16         {
 17                 printf("女神没空!\n");
 18         }
 19         return 0;

其运行结果为:

明显错误  

else会与邻近的if匹配,因此所有的if else 要把大括号带好 

 2.等于号带来的问题

 以下这个程序,运行结果会出错,因为if旁边的表达式里面等号相当于赋值,而非判断是否相等

if(a =17)
{
    printf("正确");
}
else
{
    printf("错误”);
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值