IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言之操作符 -> 正文阅读

[C++知识库]C语言之操作符

算术操作符:

+(加)? ? ? ?-(减)? ? ? ? *(乘)? ? ? ? ?/(除)? ? ? ? ? ?? ?%(取模,取余数)

以下代码讲下除以和取模:

#include<stdio.h>
int main()
{
	int a = 5 / 2; //除以=商,结果2
	int b = 5 % 2;//取模得到的是余数,1
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

位移操作符:

>> (右移)? ? ? ? ?<<(左移)

移位操作符取得是2进制位,代码如下:

#include<stdio.h>
int main()
{
	//移(2进制)位操作符
	//<<左移操作符  >>右移位操作符
	int a = 1;
	//整型1占4个字节=32bit 位
	//1的2进制序列是怎么表达的  01
	//00000000 00000000 00000000 00000001
	int b=a << 1;//a向左移1 
	//00000000 00000000 00000000 00000010(左边丢弃,右边补0)
	printf("%d\n", b);            //变成了10, 10这个2进制序列如果翻译成十进制序列的话:1x2的一次方  结果就是2
	printf("%d\n", a);//此时的a没变还是原来的1,当对a左移右移操作时,a是不变的,除非移完后赋给a

	//假设左移2位,00000000 00000000 00000000 00000100    1x2的2次方  结果4

	return 0;
}

逻辑操作符

位操作符:

(2进制)位操作

&(按位与)? ? ?|(按位或)? ? ?^(按位异或)

&(按位与)以下代码:

#include<stdio.h>
int main()
{
	//(2进制)位操作
	// &(按位与)与是并且的意思
	// | (按位或)
	// ^ (按位异或)
	int a = 3;   //  a b (2进制)位操作
	int b = 5;   //  3 5 转换的2进制是 011   101
	int c = a & b; //2进制怎么转化呢? :假设1111: 二进制:    1              1             1               1
	//011(在c中0代表假,非0为真)
	//101 (这是3和5的二进制,竖着看01为假  10 为假  11为真)
	//001  
	//1(a&b结果是1)
	printf("%d\n", c); //                                     1*2^3          1*2^2         1*2^1           1*2^0                     
	                   //    
	                    //                                      8              4            2                 1
	
	return 0;         //3 和 5 看假设里2+1,4+1          3:     0              0            1                 1
	                  //                                5:     0              1            0                 1
	                  //                         假设  13:     1              1            0                 1
}                     //                         假设  100:   需要更大的,前面加上1*2^4

? |?(按位或)以下代码:

#include<stdio.h>
int main()
{
	//(2进制)位操作
	// &(按位与)与是并且的意思
	// | (按位或)
	// ^ (按位异或)
	int a = 3;   //  a b (2进制)位操作
	int b = 5;   //  3 5 转换的2进制是 011   101
	int c = a | b; //2进制怎么转化呢? :假设1111: 二进制:    1              1             1               1
	//011(在c中0代表假,非0为真)
	//101 (这是3和5的二进制,竖着看01为假  10 为假  11为真)
	//111  (按位或)只要有一个真的 就是真的。
	//7(a|b结果是7)
	printf("%d\n", c); //                                     1*2^3          1*2^2         1*2^1           1*2^0                     
	                   //    
	                    //                                      8              4            2                 1
	
	return 0;         //3 和 5 看假设里2+1,4+1          3:     0              0            1                 1
	                  //                                5:     0              1            0                 1
	                  //                         假设  13:     1              1            0                 1
}                     //                         假设  100:   需要更大的,前面加上1*2^4

^(按位异或)以下代码:


#include<stdio.h>
int main()
{
	//(2进制)位操作
	// &(按位与)与是并且的意思
	// | (按位或)
	// ^ (按位异或) //不是次方 --是异或
	//异或的计算规律:
	//对应的二进制位相同,则为0
	//对应的二进制位相异,则为1

	int a = 3;   //  a b (2进制)位操作
	int b = 5;   //  3 5 转换的2进制是 011   101
	int c = a ^ b; //2进制怎么转化呢? :假设1111: 二进制:    1              1             1               1
	//011   (在c中0代表假,非0为真)
	//101   (这是3和5的二进制,竖着看01为假  10 为假  11为真)
	//110    (按位异或)
	//6(a^b结果是6)
	printf("%d\n", c); //                                     1*2^3          1*2^2         1*2^1           1*2^0                     
	                   //    
	                    //                                      8              4            2                 1
	
	return 0;         //3 和 5 看假设里2+1,4+1          3:     0              0            1                 1
	                  //                                5:     0              1            0                 1
	                  //                         假设  13:     1              1            0                 1
}                     //                         假设  100:   需要更大的,前面加上1*2^4

//

赋值操作符:

=? ?+=? -=? *=? ?/=? ?&=? ?^=? ?|=? ?>>=? ?<<=


#include<stdio.h>
int main()
{
	int a = 10;
	a = 20;  // = 就是赋值    == 就是判断相等
	a = a + 10;//1   1和2这俩中写法完全等价
	a += 10;  //2

	a = a - 20;
	a -= 20;

	a = a & 2;
	a &= 2;
	//这些操作符叫复合赋值符
	//=? ?+=? -=? *=? ?/=? ?&=? ?^=? ?|=? ?>>=? ?<<=
	return 0;
}

单目操作符:

!? ? ? ? ? ?逻辑反操作

-? ? ? ? ? 负值

+? ? ? ? ?正值

&? ? ? ? 取地址

sizeof? ? ? 操作数的类型长度(以字节为单位)

~? ? ? ? ?对一个数的二进制按位取反

--? ? ? ? 前置? 后置--

++? ? ? ?前置? 后置++

*? ? ? ? ?间接访问操作符(解引用操作符)

(类型)? ? ?强制类型转换

#include<stdio.h>
int main()
{
	int a = 9;
	int b = ++a;  //先++,后使用
	printf("a=%d,b=%d\n", a, b);
	//a=10,b=10
	return 0;

	}
	
#include<stdio.h>
int main()
{
	int a = 9;
	int b = a++;  //先使用,后++
	printf("a=%d,b=%d\n", a, b);
	//a=10,b=9
	return 0;

	}
	

(类型)? ? ?强制类型转换

#include<stdio.h>
int main()
{

	int a = (int)3.14;
	printf("%d\n", a);  //对3.14进行了强制类型转换,不会进行不必要的报错
	return 0;

	}
#include<stdio.h>
int main()
{

	int a= 10;
	if (a >= 10)
	{
		printf("hehe\n");
	}
	return 0;
	}
#include<stdio.h>
int main()
{

	int a= 10;
	if (10 == a)//建议反着写
  //if (a == a)
	{
		printf("hehe\n");
	}
	return 0;
	}

一个? =? ?代表赋值,俩个? ==? 代表判断相等

关系操作符

?

?条件操作符(又叫三目操作符)

C语言中唯一三目操作符

exp1?exp2:exp3

若表达式exp1为真则计算exp2

若表达式exp1为假则计算exp3

#include<stdio.h>
int main()
{

	//单目操作符
	//双目操作符
	//三目操作符
	//int a = 10;
	//int b = 20;
	//a + b;   //  +双目操作符 它有俩个操作数

	//c语言中我们要表示真假,0为假,非0为真
	//
	int a = 10;

	printf("%d\n", a); //a就是10    真
	printf("%d\n", !a); // !逻辑反操作, 把它变为假,为0
	return 0;
}

例如:找出一个较大的数进行输出

int main()
{

	int a = 3;
	int b = 5;
	int m = 0;
	m = ((a > b) ? (a) : (b));

	printf("m=%d\n", m);
	return 0;
	}

-? ? ? ? ? 负值

+? ? ? ? ?正值

代码如下:

#include<stdio.h>
int main()
{

	int a = -2;
	int b = -a;

	int c = +3; //+正号都会省略
 
	return 0;
}

sizeof? ? ? 操作数的类型长度(以字节为单位) 代码如下:


#include<stdio.h>

int main()
{
	int arr[10] = { 0 };//10个整型元素的数组
	int sz = 0;
	//10*sizeof(int)=40
	printf("%d\n", sizeof(arr));
	//计算数组的元素个数
	//数组总大小/每个元素的大小 =个数
	sz =sizeof(arr) / sizeof(arr[0]);
	printf("sz=%d\n", sz);
	/*int a = 10;*/
	//sizeof 计算的是变量 / 类型所占空间的大小,单位是字节,a占4个字节。
	//printf("%d\n", sizeof(a));//4
	//printf("%d\n", sizeof(int));//4
	//printf("%d\n", sizeof  a);  //4
	//printf("%d\n", sizeof  int);int 不加括号错误。

	return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:22:12  更:2022-10-08 20:26:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 9:44:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码