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 primer plus 第五章 -> 正文阅读

[C++知识库]C primer plus 第五章

一.基本运算符

1.“=”:意思为赋值运算符,其运算顺序是从右到左,他与数学中的等号不同

例如c语言中:

int a;
a=6;    //这行的意思是将整形6的值赋给变量a

而数学中:

a=6      //   a的值等于6
        //    a=a+6在数学中是不存在的,而在c语言中表示将(a+6)的值赋给a

使用时需要注意的:? 2021=bow? ?//? 这种写法是无效的

解释:2021被称为右值,只能为字面常量(字母,数字等构成的字符串或者数值),不能给常量赋值,常量本身就是他的值。

在编写代码时候,= 左侧的项必须引用一个存储位置,最简单便是使用变量名。被称为可修改的左值,如果加上 const 便不可以修改。

2.除法运算符

' / ' :C使用 / 表示除法,与数学中不同的是如果是整数除法:

p=5/3; //p的值是1,取结果的整数部分,整数除法结果的小数部分被丢弃(不会进行四舍五入),这一过程被称为 截断

混合整数和浮点数的计算的结果是浮点数,因为计算机会把两个运算对象转成相同类型。

对标准的如何截断:

书中原话:c99标准以前,C语言给语言的实现者留有一些空间,让他们来决定如何进行负数的整数除法。一种方法是,舍入过程采用小于或等于浮点数的最大整数。当然,对于3.8而言,处理后的3﹔符合这一描述。但是-3.8会怎样?该方法建议四舍五入为-4,因为-4小于-3.8。但是,另一种舍入方法是直接丢弃小数部分。这种方法被称为“趋零截断”,即把-3.8转换成-3。在C99以前,不同的实现采用不同的方法。但是C99规定使用趋零截断。所以,应把-3.8转换成-3。

3.运算符的优先级的图表

4. sizeof()运算符

sizeof()以字节为单位返回运算符对象大小,运算对象可以是数据类型,变量名,

如果运算对象是数据类型必须加括号,例如 sizeof( int ), sizeof(float)等

如果不是则可以选择加上或者不加括号

sizeof()的转换说明是%zd( c99 ),不支持则使用 %lu 或 %u

#include<stdio.h>
int main()
{
  int arr[40];
  size_t number;
  number=sizeof(arr);
  printf("%zd",number);
  return 0;
}

5.求模运算符(运算符两侧必须是整数)

“%”:它得到的值是余数 例如 5%3=2??

负数求模:

在C99规定的趋零截断,如果第一个运算对象是负数,那么求模的结果为负数;如果第一个运算对象为负数,那么求模结果是正数,

? 11/5得2,11%5得1

? 11/-5得2,11%-2得1

? -11/-5得2,-11%-5得-1

?-11/5得-2,-11%5得-1

如果不按照C99标准,不同的系统下可能会出现多种结果

6.自增自减符

“++”,“--”:其含义都是自增,自减 1

i=i+1;? ? ?// i=i-1

但分为前置“ ++ ”或者“--”和后置“ ++ ”或者“--”,前者为先加1,后赋值,后者是先赋值在加1;

#include<stdio.h>
int main()
{
    int i=0;
    int j=0;
    printf("++1=%d,j++=%d",++i,j++);
    return 0;
}

其结果是:

?++i;是将自身i的值先加上1,后将值给%d

j++: 是将自身值先给%d,而后加1;

注意:

下面情况的值是不确定的根据不同编译器执行顺序决定:

int num=5;

1.? ?printf("%d? %d",num,num*num++);

2.? ?int y=num/2 *5(num++);

故遵循以下使用规则:
1.? 如果一个变量出现在一个函数的多个参数中,不要对该变量使用递增或递减运算符;
?2. 如果一个变量多次出现在一个表达式中,不要对该变量使用递增或递减运算符。
?

二,表达式和语句

1.表达式是由运算符运算对象组成:

4

-6

4+21

a*(b+c/d)/20

q=5*2

q>3? //逻辑运算符,如果q大于3是真则整个表达式值为1,否则为0

2.语句 是C程序的基本构建块

语句由 表达式加上一个分号组成被称为表达式语句,最简单的语句便是空语句

空语句

? ? ? ? ;//什么都没有加个分号

? ?复合语句便是用花括号括起来里面包含多条语句

三.类型转换

在C语言中存在数据类型的升级(小类型向大类型)降级(大类型向小类型):

例如:1. float a =5.0f;

? ? ? ? ? ? double b??????=a+6.0;//a 会被升级为double 类型进行计算被称为升级

? ? ? ? ? ?2. double b=5.0;

? ? ? ? ? ? ? ? float a=b+6.0f? //降级

? ? ? ? ? 3.当作为函数传递时,char 和short 被转换称 int

降级可能会引起一些问题例如:

#include<stdio.h>
int main()
{
   int a=256;
   unsigned char ch=a;//范围是unsigned char 类型能表示的范围是   0——255
   printf("%d",ch);
   return 0;
}

其结果是0

因为 其256是以整型形式存储到a变量中故有32个bite位

00000000 00000000 00000001?00000000?

当存入到无符号字符型(8个bite位)时,发生截断,只保留后8位,故为0

补充:整型提升

为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。

整形提升是按照变量的数据类型的符号位来提升的

//负数的整形提升
char c1 = -1;
变量c1的二进制位(补码)中只有8个比特位:1111111
因为char为有符号的char
所以整形提升的时候,高位补充符号位,即为1提升之后的结果是:
11111111111111111111111111111111
//正数的整形提升
char c2 = 1;
变量c2的二进制位(补码)中只有8个比特位:00000001
因为char 为有符号的 char
所以整形提升的时候,高位补充符号位,即为0提升之后的结果是:
00000000000000000000000000000001
//无符号整形提升,高位补O
?

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

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