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++知识库]初始C语言(三)(C语言初阶)

目录

10、操作符(运算符)

算数操作符

移位操作符

位操作符

赋值操作符

单目操作符

?关系操作符

逻辑操作

条件操作符

逗号表达式

下标引用、函数调用和结构成员

11、常见关键字

11.1、关键字typedef

11.2、关键字static


10、操作符(运算符)

算数操作符

+  -  *  /  %


#include <stdio.h>

int main()
{
	int a = 7 / 2;       //'/'为除法号
	int b = 7 % 2;       //'%'为取余号
	float c = 7 / 2.0;
	printf("%d\n", a);   //打印值为3
	printf("%d\n", b);   //打印值为1
	printf("%f\n", c);   //打印值为3.500000
// %f——打印浮点数   %d——打印整数
	return 0;
}

移位操作符

//>> —— 右移操作符   << —— 左移操作符

#include<stdio.h>
int main()
{
	int a = 12;
//并不是以10进制去移动位置,而是以二进制去移动位置。
	int b = a >> 1;
//00000000000000000000000000001100 —— 移动之前 —— 值为12 —— 1*2*2*2+1*2*2+1*2+1
//00000000000000000000000000000110 —— 移动之后 —— 值为6  —— 1*2*2+1*2+1
//int 占空间 4个字节 —— 每个字节为占8个bit位 —— int 占 32 个 bit 位
	int c = a << 1;
//00000000000000000000000000001100 —— 移动之前 —— 值为12
//00000000000000000000000000011000 —— 移动之后 —— 值为24
	printf("%d\n", b);   //打印值为6
	printf("%d\n", c);   //打印值为24
	return 0;
}

注:a >> 1 等价与 a / 2 ———— a <<?1 等价与 a *?2

a >> 2?等价与 a / 2 / 2?———— a << 2?等价与 a *?2 * 2 —— 依次类推

位操作符

&  ^  |

#include<stdio.h>
int main()
{
	int a = 5;
	int b = 3;
	int c = 5 & 3;   //按(二进制)位与
//00000000000000000000000000000101 —— a
//00000000000000000000000000000011 —— b
//00000000000000000000000000000001 —— c
//对应的二进制位只要有0就为0、全部为1才为1
	int d = 5 | 3;   //按(二进制)位或
//00000000000000000000000000000101 —— a
//00000000000000000000000000000011 —— b
//00000000000000000000000000000111 —— c
//对应的二进制位只要有1就为1、全部为0才为0
	int e = 5 ^ 3;   //按(二进制)位异或
//00000000000000000000000000000101 —— a
//00000000000000000000000000000011 —— b
//00000000000000000000000000000110 —— c
//对应的二进制位只要有不同就为1,相同为0;
	printf("%d\n", c);   //打印值为1
	printf("%d\n", d);   //打印值为7
	printf("%d\n", e);   //打印值为6
	return 0;
}

赋值操作符

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

#include<stdio.h>
int main()
{
	float a = 1;
	float b = 2.5f;
//直接定义的浮点数是double类型如(b  =  2.5)需要在后面加上一个f(如上一行所示)
	a += b;
//a += b  和  a = a + b  等价
//其他的赋值操作符也一样,依次类推
	printf("%f\n", a);
	return 0;
}

单目操作符

!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符)
(类型)       强制类型转换


//   !           逻辑反操作
//计算机如何(判断真假)
//0为假  非零为真
#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
//输入0,打印hehe
	if (num)
		printf("hehe\n");
//输入非零,打印haha
	if (!num)
		printf("haha\n");
	return 0;
//注意计算机中的非零为真 = 1
}


//sizeof      操作数的类型长度(以字节为单位
#include<stdio.h>
int main()
{
	int arr[10] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);  //求解数组中元素的个数
	printf("%d\n", sizeof(arr));    //打印值为40
	printf("%d\n", sizeof(arr[0]));    //打印值为4
	printf("%d\n", sz);    //打印值为10
	return 0;
}


//~           对一个数的二进制按位取反
//计算机识别二进制语言 —— 内存存储的也是二进制语言。
//对一个数按位取反也是二进制。
//
//整数有三种二进制表达方式;
//原码 —— 直接按照数字大小正负转换成二进制
//反码 —— 原码的符号位不变,其它位按位取反
//补码 —— 反码 + 1;
//
//正整数的原码,反码,补码相同
//负数的原码,补码,反码需要计算
//
//二进制的最高位表示正负
//0表示正数   1表示负数
#include<stdio.h>
int main()
{
	int a = 0;
//计算机中储存的是补码
//00000000000000000000000000000000 —— a的补码 —— a是正整数所以原码,反码,补码相同
    int b = ~a
//11111111111111111111111111111111 —— b的补码
//printf打印的是原码,所以要把b的补码转换成原码
//11111111111111111111111111111110 —— b的反码
//10000000000000000000000000000001 —— b的原码
//整数的二进制最高位表示正负号所以b = 1
	printf("%d\n", b);   //打印值为1
	return 0;
}



//   --     前置、后置--
//   ++     前置、后置++
#include<stdio.h>
int main()
{
	int num1 = 10;
	int num2 = num1++;
	int num = 11;
	int num3 = --num;
	printf("%d\n", num1);   //打印值为11
	printf("%d\n", num2);   //打印值为10
	printf("%d\n", num);   //打印值为10
	printf("%d\n", num3);   //打印值为10
	return 0;
}



//(类型)       强制类型转换
#include<stdio.h>
int main()
{
	int a = (int) 4.56;
	printf("%d\n", a);
	return 0;
}

?关系操作符

>
>=
<
<=
!=   用于测试“不相等”
==   用于测试“相等”

逻辑操作

&&     逻辑与
||     逻辑或

条件操作符

//exp1? exp2 : exp3


//条件操作符(三目操作符)。
//比较a和b的大小。
#include<stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int c = a > b ? a : b;
	printf("%d\n", c);
	return 0;
}

逗号表达式

//exp1, exp2, exp3, …expN

//逗号表达式的应用
#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	int c = 3;
	int d = (a = a + b, c = b - c, b = a + c);
//逗号表达式从左到右依次执行,整个表达式的结果是最后一个表达式的结果。
	printf("%d\n", d);   //打印值为2
	return 0;
}

下标引用、函数调用和结构成员

//下标引用操作符[]
#include<stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4 ,5 };
	int a = arr[2];   //其中的[]为下表引用操作符
//其中的操作数为 arr和2
	printf("%d\n",a);   //打印值为3
	return 0;
}


//函数调用操作符()
#include<stdio.h>

int ADD(int x, int y)   //这个()是函数的语法,不是函数调用操作符
{
	return (x + y);
}

int main()
{
	int num1 = 10;
	int num2 = 20;
	int num3 = ADD(num1, num2);
//上面一行中的()是函数引用操作符,引用函数过程中不可少
//其中的操作数为 ADD、num1、num2
	printf("%d\n", num3);   //打印值为30
	return 0;
}

11、常见关键字

auto  break   case  char  const   continue  default  do   double else  enum   
extern float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while

auto —— 自动关键字,可以省略,一般用于数据类型前面
循环语句:break continue do for while
选择语句:case continue default else if
数据类型:char double  float int long short signed unsigned void 
const —— const 修饰的常变量
自定义类型:enum struct union
extern —— 外部声明
goto语句
register —— 寄存器
return —— 函数返回
size —— 求数据所占空间的大小
static —— 静态
typedef —— 重新定义类型

11.1、关键字typedef

//将unsigned int 重新命名为 uint ,两者所表达的类型相同。
#include<stdio.h>

typedef unsigned int uint;  //unsigned int 重新命名为 uint

int main()
{
	uint age = 22;
	return 0;
}

11.2、关键字static

static修饰局部变量

?是局部变量出了自己的作用域,但是没有被销毁,

增加了局部变量的生命周期,但是作用域没有发生改变。

#include<stdio.h>
void test2()
{
	int b = 0;
	b++;
	printf("%d\n", b);
}
void test1()
{
	static int a = 0;   //static修饰的局部变量
	a++;
	printf("%d\n", a);
}
int main() 
{
	int i = 0;
	while (i < 10)
	{
		test1();    // 打印值为 1 2 3 4 5 6 7 8 9 10
		i++;
	}
	i = 0;
	while (i < 10)
	{
		test2();    // 打印值为 1 1 1 1 1 1 1 1 1 1
		i++;
	}
	return 0;
}

static修饰全局变量

全局变量有外部链接属性,作用域是整个工程

当static修饰全局变量时,全局变量没有了外部链接属性,只能在一个文件中使用,在其他文件中不能被引用。

static修饰函数

函数本身就具有外部链接属性

当static修饰函数时,函数没有了外部链接属性,只能在一个文件中使用,在其他文件中不能引用。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 11:53:50  更:2021-07-26 11:53:52 
 
开发: 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/4 11:27:03-

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