首页 > 其他分享 >学习C语言两个月后的收获(篇目三) #算术操作符 #强制类型转换 #关系操作符 #条件操作符 #逻辑操作符

学习C语言两个月后的收获(篇目三) #算术操作符 #强制类型转换 #关系操作符 #条件操作符 #逻辑操作符

时间:2024-06-16 18:59:56浏览次数:25  
标签:类型转换 求模 int 算术操作符 ++ 操作符 -- 除法

一. 算术操作符

1. 双目操作符 : + 、- 、* 、/ 、%

注:双目操作符,顾名思义就是有两个操作数的操作符

a. / : 除号 。分为整数的除法和小数的除法

整数的除法:

'/' 两边的操作数是整除故而进行整数的除法。

整数的除法取值规则:不管余数是多少,不会四舍五入,直接舍弃余数部分而得到整数部分

int i = 5 / 2 ; // i = 2;
小数的除法:

就是平时正常的除法.但是要求 '/' 的两个操作数至少有一个为小数(浮点型)

int i = 5 / 2.0 ; //i = 2.5

int n = 5.2 / 2 ; //n = 2.5

int j = 5.0 / 2.0; // j = 2.5

b. % :模(取余) 分有整除求模和负数求模  !!!没有小数求模!!!

整数求模:

只要这两个整数相除的余数

int i = 5 % 2 ; // i = 1

int j = 11 % 4 ; // j = 3
负数求模:

结果的正负号由第一个运算数的正负号决定

int i = -5 % 2 ; //i = -1

int j = 5 % 2 ; // i = 1

int n = -5 % -2 ; // n = -1

2. 单目操作符 : ++ , -- ,+(正号) 、- (负号)

a.++ : 前置++ 、后置++

前置++ :先自增,再使用

 int a = 2;

int b = ++a ; // a = 3 ; b = 3;
//实质为 a = a+1; --> a = 3 ;
//       b = a; --> b =3

后置++ :先使用,再自增

int a = 2 ;

int b = a++ ; //b = 2; a = 3;
//实质为 b = a; --> b = 2 ;
 //     a = a+1; --> a = 3;

b.-- :前置-- 、后置--

前置-- : 先自减 ,再使用

int a = 2;

int b = --a;  // a = 1;b = 1;

//实质为:a = a-1; --> a = 1; 
//       b = a ; --> b = 1;             

后置--:先使用,再自减 

int a = 2 ;

int b = a-- ; //  b = 2 ; a = 1;

//实质为 : b = a ;--> b = 2;
//         a = a-1;--> a = 1;

c.+(正号)

d.-(负号)

3. 赋值操作符 : += 、-= 、*= 、/= 、%=

                           >>= 、<<= 、&= (按位与) 、|= (按位或) 、^= (按位异或) (--->还未学到)

注意初始化和赋值的区别;

初始化: 在变量创建的时候给它一个值

赋值:在变量创建好了之后,再给它一个值

int i = 1; //初始化

i = 2; //赋值 

二. 强制类型转换:  (类型)

int i = 3.14; //int 是整型,而3.14是浮点型。初始化类型不匹配--> 编译器会报错

int i = (int) 3.14; //强制类型转换

srand((unsigned int ) time (NULL)) ;  中的(unsigned int)也是强制类型转换。

因为srand 参数的类型要求为 unsigned int ,而time() 的返回值类型为 time_t。

三. 关系操作符:

  >  、<  、 >=  、<=  、 ==  、 != 

1.返回值:

通常返回 1 或者 0 用来表示这个表达式的真假

同时要注意多个关系运算符不能连用.     

   2.  >  、<  、 >=  、<=  、 ==  、 !=  讲解                        

上述代码,输入c = 222; 并不在 2-11 这个范围之内,但还是输出了 "hahahaha" , 为什么呢?

因为,表达会因为其真假而返回1或者0,在 a < c <b ,这个表达式中,会先判断左边部分,也就是 a<c这部分,显然 2 < 222 是成立的,所以 a<c 返回了1,接下来 1与 b 进行比较, 1 < b 也成立,c < b 这个表达式又返回1,非0 为真---> for(1) 就会执行打印 "hahahaha" 的语句

a. > :大于

b. < :小于

c. <= : 小于等于

d . >= :大于等于

e. == :相等运算符

在条件判断时,注意区别 ’=‘ 与 ‘==’ ,‘=’ 是赋值,‘==’ 才表示相等

f. != : 不相等运算符

四 . 条件操作符

(条件操作符又称三目操作符,需要接受三个操作数)

 exp1 ? exp2 : exp3   ----> (我这样理解的:)  条件真or假 ? 真 : 假

计算逻辑:

如果exp1 为真,那么就计算 exp2 ,exp2的计算结果就为整个表达式的结果;

如果exp1 为假,那么就计算 exp3,  exp3的计算结果就为整个表达式的结果。

                     可以用来判断大小再做减法

也可以单纯判断大小

五. 逻辑操作符 :

  &&  、 ||  、 ! 

上述例子说到,多个关系运算符不能连用。想要表达多个关系就可以用上关系操作符

1.&& :

逻辑与操作符 ---> '与'--->and --->可以理解为并且的意思  

总之:只要有一个为假(不满足条件),便都为假

真 && 真 ----> 真  (同真则真,同假则假,一假一真为假)

2. || :

逻辑或操作符  ---> 可以理解为或者的意思

 总之:至少有一个满足条件,就可以执行

3. ! :

反逻辑操作符  (颠倒真假)

1为真,故而会执行 if 语句:

!--> 逻辑取反操作符 --> 将真的变成假的 --> 执行else的语句

标签:类型转换,求模,int,算术操作符,++,操作符,--,除法
From: https://blog.csdn.net/Distinguished_z/article/details/139717941

相关文章

  • Makefile手册中"+=",":=","?="操作符的区别
    目录Makefile手册中"+=",":=","?="操作符的区别1."?="操作符2."+="操作符3.":="操作符Makefile手册中"+=",":=","?="操作符的区别1."?="操作符在GNUmake中,有一个变量在之前没有被赋值的情况下才会对这个变量进行赋值的操作,被称为条件赋值操作......
  • 在 Solidity 中将地址类型转换为 IERC20 接口类型
    在智能合约开发中,尤其是涉及到ERC-20代币交互时,开发者常常需要将一个地址类型转换为IERC20接口类型。这样做的目的是为了调用接口中的函数,如transfer和approve。本文将详细讲解这一过程,并简要介绍相关的背景知识。什么是ERC-20和IERC20?ERC-20是一种在以太坊区块链上......
  • 核心(Hutool-core)类型转换
    在Java开发中我们要面对各种各样的类型转换问题,尤其是从命令行获取的用户参数、从HttpRequest获取的Parameter等等,这些参数类型多种多样,我们怎么去转换他们呢?常用的办法是先整成String,然后调用XXX.parseXXX方法,还要承受转换失败的风险,不得不加一层trycatch,这个小小的过程混迹在业......
  • C# OpenCvSharp Mat操作-操作符重载
    在C#中使用OpenCvSharp进行图像处理时,操作符重载可以使代码更加简洁和直观。下面是对每个操作符的详细解释及示例代码。“+”运算符作用或原理:+运算符可以在Mat与Mat之间进行,也可以在Mat和一个数字之间进行加运算。使用加运算可以改变图像亮度,也可以实现两幅图像......
  • JAVA1 类型转换 题目
    题目JAVA1类型转换分析:代码:大佬代码:JAVA1类型转换描述设计一个方法,将一个小于2147483647的double类型变量以截断取整方式转化为int类型 输入描述:随机double类型变量 输出描述:转化后的int类型变量示例:输入:12.34输出:12输入:1.88输出:1分析:1.......
  • 【C++面向对象】重载操作符
    C++将运算符重载扩展到自定义的数据类型,它可以让对象操作更美观。例如字符串string用加号(+)拼接、cout用两个左尖括号(<<)输出。运算符重载函数的语法:返回值operator运算符(参数列表);运算符重载函数的返回值类型要与运算符本身的含义一致。非成员函数版本的重载运算符函数:形......
  • 一步步了解C++类型转换:static_cast、const_cast、reinterpret_cast和dynamic_cast
    1. static_caststatic_cast 可以用于基础类型之间的转换,类层次结构中的父类和子类之间的转换,以及把 void* 转换成目标类型的指针等。静态类型转换示例:#include<iostream>classBase{};classDerived:publicBase{};intmain(){//基础数据类型int......
  • JS类型转换面试题:[] == ![] 为true?
    前言OK,又是在学习的路上遇到了难点,今天拿来分享一哈。ok,话不多说,开始分享。下面是一道面试题console.log([]==![])你觉得上面的值打印为多少?我告诉你,打印的结果是true。如果你是猜对的或者不会可以看看我对这个问题的深度解剖,如果有大哥已经了解也欢迎在评论区指教一......
  • 神奇的JavaScript弱等价类型转换
    JavaScript语言特性-类型转换JavaScript这门语言的类型系统从来没有它表面看起来的那样和善,虽然比起Java、C#等一众强类型语言,它的弱类型使用起来似乎是如此便利,但正因为它极高的自由度,所以才会衍生出令人摸不着头脑的荒诞行为。举个例子,虽然我们都知道一个包含内容的字符串会......
  • 第四章: 全面梳理Java 标识符变量的声明,基本数据类型,String类型以及相互之间的类型
    1.关键字和保留字关键字(keyword)是指被Java语言赋予了特殊含义,用做专门用途的字符串(单词)其特点就是关键字中所有字母都为小写官方地址:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html保留字(reservedword)是当前Java版本尚未使用,但以......