首页 > 其他分享 >单目操作符

单目操作符

时间:2023-11-11 14:32:04浏览次数:38  
标签:int 32 3.14 取反 单目 操作符 printf

今天我们来了解一下六个较为常见的单目操作符。分别是! - sizeof ~ ++ 以及强制类型转换。

1、首先我们先来了解一下!的用法。我们知道在C语言中,0表示假,而其他非0的都表示真。而!的用法就是“非”,把真的转为假,假的转为真。举个简单的例子:

#include<stdio.h>
int main()
{
int a=10;
printf("%d",a);
printf("%d",!a);
return 0;
}

2、负号-,这个也不需多言,就是数学中的负号,把正数转为负数,负数转为正数。

3、sizeof输出类型长度操作符

我们知道int整型是4个字节长度,double是8个字节长度。比如

int a=10;
printf("%d",sizeof(int));//或者printf("%d",sizeof(a));

打印结果是4,输出类型长度的操作符。

4、波浪号~按位取反(二进制)

波浪号的意思是把一个数的二进制数的每一位都取反,也就是反码。但在C语言中的反码和我们在数字逻辑中计算的会有所不同。接下来我会详细介绍。我们先由一个例子来引入:

#include<stdio.h>
int main(){
int a=0;
int b=~a;
printf("%d",b);
return 0;
}

此时的输出结果是什么?

相信大多数人是这样想的。a是0,所以a的二进制也是0,而b是a的按位取反,所以输出1.

但这个结果是错误的。正确的答案是-1.

为什么?

首先我们刚刚说到了int在空间中占4个字节,也就是占4个地址,换算成bit就是32位的比特位。也就是说0的二进制数列其实是32个0,而把32个0按位取反之后变成了32个1,这样为什么结果不是二的三十二次方减一呢,因为32个1是一个负数的补码,要转回原码表示,先减一然后除了符号位都按位取反,得出结果是1(30个0)1,也就是-1.

5、++,--加一/减一单目操作符

举个例子:

#include<stdio.h>
int main(){
int a=10;
int b=a++;
printf("%d %d",a,b);
return 0;
}

输出的结果是11 10.因为后置++是先赋值后+1,前置则反之。--同理。

6、强制类型转换

我们知道int是整型变量,如果我们打出int a=3.14;这样的代码,显然会报错。那么怎么样才能纠正?int a=(int)3.14则成立,意思就是先把3.14这个浮点数强制类型转换成int类型,也就是先把3.14变成3,再赋值给a。

标签:int,32,3.14,取反,单目,操作符,printf
From: https://blog.51cto.com/u_16352468/8318119

相关文章

  • 设置成员操作符--inside
     设置成员操作符–insideSystemVerilog增加了一个检测是否集合中–员的操作符,这个操作符的关键字是inside。logic[2:0]a;if(ainside{3'b001,3'b010,3'b100})//等价if((a==3'b001)||(a==3'b010)||(a==3'b100))...使用inside操作符可以方便的比较一个数值和多个可能值......
  • C++全部操作符优先级整理
    优先级操作符描述例子结合性1()[]->.::++--调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作符后置自减操作符(a+b)/4;array[4]=2;ptr->age=34;obj.age=34;Class::......
  • 二进制及操作符运用
    今天的练习是移位操作符和赋值操作符:......
  • C++_20_操作符重载和函数重载 - 重写版
    操作符(运算符)重载 操作符重载指的是将C++提供的操作符进行重新定义或者多重定义,使之满足我们所需要的一些功能。在C++中,经常有需要对多个对象进行算术运算,但是对象比不是基本的数据类型,所以这些运算符都无法执行。为了让程序识别这些运算符,就需要对运算符进行重载......
  • CPP操作符重载:operator T()
    operatorT()提供了一个本类型到T的隐式转换,不允许使用参数classB{private:int_b;public:B(intb):_b(b){}~B(){}constintgetB()const{return_b;}booloperator==(B&b){return_b==b.getB();}};classA{private:......
  • 19、模糊查询操作符详解
    模糊查询:本质是比较运算符运算符语法描述isnullaisnull如果操作符为null,则结果为真isnotnullaisnotnull如果操作符不为null,则结果为真betweenabetweenbandc若a在b和c之间,则结果为真likealikebSQL匹配,如果a匹配到b,则结果为真inain(a1......
  • 关于操作符的补充
    关于操作符的补充上次我们已经说了+,-,*,/,那一节,作为C刚刚入门的新手,写的不好庆幸的是说的是加减乘除今天我们说一些常常使用的一些1,sizeof运算符和sizet类型sizeof运算符以字节为单位返回运算对象的大小(在C中,1字节定义为char类型占用的空间大小。过去,1字节通常是8位,但是一些字符集......
  • ROS2 foxy 单目相机标定方法(笔记本电脑摄像头)
    环境:Ubuntu20.04、ROS2foxy相机标定使用的是棋盘格的内部顶点,因此"12x9"的棋盘板,其内部顶点参数为"11x8"。安装ImagePipeline安装相机标定所需软件包:sudoaptinstallros-galactic-camera-calibration-parserssudoaptinstallros-galactic-camera-info-managers......
  • ORBSLAM3+ROS2foxy 调用笔记本摄像头跑单目相机程序 (Ubuntu20.04)
    环境要求:Ubuntu20.04、ROS2foxy、OpenCV4.4.01.安装ORB_SLAM3首先安装ORB_SLAM3:https://github.com/zang09/ORB-SLAM3-STEREO-FIXED。安装方法参考:https://www.cnblogs.com/xiaoaug/p/17766112.html安装完成并且测试数据集也能够跑通后即可。2.下载ROS2foxy版ORB_......
  • 【C语言】操作符有几种?你真的知道吗?
    ⛩️博主主页:@威化小餅干......