自己如何建设网站聊天室,如果自己做网站,玉溪市建设局网站,wordpress文章页面添加广告先导#xff1a;
目录
一、整形
二、浮点型
#xff01;保留指定小数位数
三、布尔类型
关系运算
逻辑运算
C逻辑运算四句口诀
四、字符型
ASCll码
C中的字符表示
字符比较
ASCII中的常用转换
大小写转换
转换成0~25
五、数据类型隐式转换
1. 隐式转…先导
目录
一、整形
二、浮点型
保留指定小数位数
三、布尔类型
关系运算
逻辑运算
C逻辑运算四句口诀
四、字符型
ASCll码
C中的字符表示
字符比较
ASCII中的常用转换
大小写转换
转换成0~25
五、数据类型隐式转换
1. 隐式转换的通用规则
2. 隐式转换的优先级
示例算术运算时的隐式转换
3. 整数提升Integer Promotion
4. 算术转换Arithmetic Conversion 一、整形 我们平常最常见的整形是int它占4个字节 也就是32比特可表示的范围为~如果是 unsigned int即没有负数区间表示范围为~。
cout sizeof(int) endl sizeof(1234)输出
4
4
如果我们存储的数字范围超过int了那么我们就可以使用long long。long long占8个字节
cout sizeof(123456789123456789) endl sizeof(long long);输出
8
8
有的时候我们需要把int转换为long long我们可以将一个数字乘上1LL或者加上后缀ll或LL。
cout sizeof(1234 * 1LL);
输出
8
在实际编程过程中如果需要多次使用 long long我们可以通过 typedef 关键字将 long long 重命名为 ll
使用格式typedef long long ll;
#include bits/stdc.h
using namespace std;
typedef long long ll;
ll a;
int main(){cin a;cout sizeof(a);return 0;
}
输出
8
另外在C primer是这样规定的sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)但是各个数据类型的具体长度则是由编译器自行决定的。
在我们考试的系统中short 占 2 个字节long 占 8 个字节。
二、浮点型
名称数据类型字节数数据范围有效位数单精度浮点数float4B-3.4e38~3.4e386~7位双精度浮点数double8B-1.7e308~1.7e30815~16位长双精度浮点数long double16B-1.2e4932~1.2e493218~19位
float 占 4 字节保留有效位数 7 位double 占 8 字节保留有效位数 16 位。一般在算法竞赛中我们都使用 double。
其中浮点型默认为double类型跟long long一样也可以通过后缀f、F单精度浮点型、L长双精度浮点型。
cout sizeof(1.11) endl;
cout sizeof(1.11f) endl;
cout sizeof(1.11F) endl;
cout sizeof(1.11L) endl;输出
8
4
4
16
保留指定小数位数 注意
使用setprecision保留小数位数时需要引入头文件#include iomanip必须加 fixed否则实际输出位数可能会小于指定保留位数。以上所有格式化控制符只对紧跟在其后的数据有作用。
#include iostream
#include iomanip
using namespace std;
const double P 3.1415;
int main(){cout P endl;cout setprecision(5) P endl; //错误示范此处必须要加fixedcout setprecision(6) 3.14159265358 endl;cout fixed setprecision(3) P endl;cout fixed setprecision(5) P endl;return 0;
}
输出为 3.1415 3.1415 3.14159 3.142 3.14150
三、布尔类型
名称数据类型字节数数值范围布尔bool1Btrue或false
布尔变量声明和赋值
bool a true, b false;
bool a, b;
bool a 0, b 1;
//注意同之前的一样每个变量只能被定义声明一次这里只是为了方便演示
输出的bool类型并不会输出true或者false而是输出1或0其中true是1false是0。一个非零数定义成bool的时候为true但输出是1
cout bool(0.2) endl; //输出:1
bool a -1, b 0;
cout a b; //输出:1 0
int c bool(3), d false;
cout c d endl; //输出1 0
关系运算
大小关系C关系运算符数学符号大于小于大于等于 小于等于等于不等于!
重点来了
数值A 关系运算符 数值B表达式的值布尔值
什么意思呢让我们来看几个例子
比如表达式
1 2
1显然比2小所以这个表达式的值为false否
(a 3) 3
这个式子中先把a赋值成了3再判断a是不是等于3这个结果肯定是true
有一个比较容易判断错的式子1 2 false
这个式子的值为false。首先我们先解析括号中的式子12这个式子的结果肯定为真而真与假矛盾了所以这个式子肯定为假 记住这个四句口诀轻松搞定多重关系运算符的真假判断 口诀速记
括号优先算先算括号内比较从左看同级从左到右赋值返右边返回赋值结果真值对比干true/false直接比 例子秒懂
(a3)3 → 真口诀3赋值返右边a3返回3再比33(12)false → 假口诀14先算12得true再比truefalse
**⚡ 避坑提醒**
小心**赋值和比较**别混淆遇到、等比较符从左到右依次算。
用这口诀再复杂的表达式也能秒拆解 ✨
逻辑运算
逻辑运算符含义逻辑与如果两个表达式的值都为真就返回真否则就返回假||逻辑或两个表达式有一个表达式的值为真就返回真逻辑非如果表达式为真就返回假。表达式为假就返回真
逻辑运算真值表1表示表达式的值为真0表示假
ABA BA || BA ! B11110100100101100001 重点又又又来了
布尔值A 逻辑运算符 布尔值B表达式的值布尔值
大家一定要牢记于心我们来看看一些例题
判断一个数a是否满足有很多初学者会这样写
2 a 17 但这是大错特错的在C中程序是顺序执行的它会先执行2a不论结果如何返回的一定是一个布尔值可布尔值如何跟17进行比较所以我们要用上逻辑运算符这样写
2 a a 17
只有两种条件都满足了也就是满足了结果才为真。
判断一个数是否是3或5的倍数 a % 3 0 || a % 5 0 C逻辑运算四句口诀
非先算与或后! ||或一真与全真|| 一真即真 全真才真区间判与相连a2 a17整除判或相连num%30 || num%50
例子秒懂
!flag (x5) → 先算!flag再算口诀1age18 || score90 → 满足一个即真口诀22a a17 → 区间必须用口诀3n%30 || n%50 → 3或5的倍数口诀4
⚡ 核心优先级短路求值区间写法四句搞定所有逻辑判断 ✨
在写逻辑表达式时一定要注意优先级如果优先级靠后的那个运算符一定要加括号 对于布尔类型需要研究的知识有很多这对于以后的基础都非常重要小编之后也会带着大家一起练习。
四、字符型
字符常量是由单个字符组成所有字符采用 ASCII 编码通用 ASCII 编码共有 128 个字符。在程序中通常用一对单引号将单个字符括起来表示一个字符常量。如a,0,A。
名称数据类型字节数数据范围字符char1B-128~127无符号字符unsigned char1B0~255
ASCll码
ASCII码它是一种基础的字符编码标准用7位二进制数即0~127的十进制范围表示128个字符。 标准ASCII0~127 0~31控制字符如换行\n、制表符\t、回车\r等。32~126可打印字符 32空格 48~57数字 0 到 965~90大写字母 A 到 Z97~122小写字母 a 到 z其他标点符号如 !, , # 等。 127删除控制字符DEL。 扩展ASCII128~255非标准依赖系统如Windows-1252表示特殊符号如é, ©等。
C中的字符表示
char a A;//存储ASCII值65
cout a endl;
char a 65;//定义a在ASCII中为A
cout a;输出
A
A
我们可以使用转义字符来实现一些输出不要求掌握后两个
名称字符形式值换行\n0X0A水平制表\t0X09反斜杠\\0X5C
#include bits/stdc.h
using namespace std;
int main(){cout 大家好\n我是\t小猫\\;return 0;
}
大家可以运行看看
字符比较
这部分就要用到之前讲过的关系运算了大家可以复习一下。注意这里我们所讲的是字符不是字符串字符串之间的比较方式为字典序
字符比较和数字之前的比较一样都是返回表达式的值为真还是假但是字符比较的不是字符而是ASCII中字母所代表的数字举一些例子
表达式ab的值a在ASCII中为97 b为98a应该比b小这个表达式的值为假02这个的值显然为真因为4850
在这里要补充一点字符和字符之间是可以进行运算的参与运算的也是每个字母代表的ASCII值结果也是数字如b1的结果是99。
ASCII中的常用转换
大小写转换
我们可以根据ASCII中的规律进行大小写转换我们可以发现大写字母和小写字母之间ASCII值只差了32注意小写字母转化成大写字母时需要减去32反之则加上32这样就实现了C中的大小写转换。
#include bits/stdc.h
using namespace std;
int main(){char a A;char b a 32;cout a endl b;return 0;
}
转换成0~25
有时我们为了看起来更方便一些可以把字母转换成对应的0~25。怎么操作呢对于小写字母我们只要把对应的字母减去一个a对于大写字母我们我们只要把对应的字母减去一个A
#include bits/stdc.h
using namespace std;
int main(){char a C;cout a - A endl;char b c;cout b - a endl;
}
注意ASCII只针对于英文中文无效
五、数据类型隐式转换
隐式转换是指在编程语言中由编译器自动执行的类型转换过程而无需显式指定。这种转换是为了保持操作的一致性使不同类型的数据能够在一些特定的上下文中进行运算或操作。隐式转换通常涉及到较小范围数据类型向较大范围数据类型的转换以避免数据丢失或提高精度。 1. 隐式转换的通用规则
隐式转换通常发生在以下情况
赋值时算术运算时, -, *, /函数调用时参数类型不匹配初始化时如 int x 3.14;
编译器会按照从低精度到高精度、从小范围到大范围的原则自动转换数据类型以避免数据丢失。 2. 隐式转换的优先级
C的隐式转换遵循类型提升Type Promotion规则优先级如下从低到高
数据类型提升方向示例bool→ inttrue → 1, false → 0char, short→ intA → 65int→ unsigned int-1 → 429496729532位系统int→ longint → long如果 int 范围不足int→ float5 → 5.0ffloat→ double3.14f → 3.14double→ long double3.14 → 3.14L
示例算术运算时的隐式转换
int a 5;
float b 3.14f;
auto result a b; // int → floata提升为float
cout result; // 输出 8.14float类型 3. 整数提升Integer Promotion
在算术运算中比 int 小的整型如 char、short会被提升为 int
char c A; // ASCII 65
short s 100;
auto sum c s; // char → int, short → int运算结果为int
cout sum; // 输出 165int类型 4. 算术转换Arithmetic Conversion
如果两个操作数类型不同C会按照以下规则转换
如果有一个操作数是 long double另一个转换为 long double。否则如果有一个操作数是 double另一个转换为 double。否则如果有一个操作数是 float另一个转换为 float。否则进行整数提升char/short → int然后按以下规则转换 如果一个是 unsigned long另一个转换为 unsigned long。如果一个是 long另一个是 unsigned int 如果 long 能表示所有 unsigned int 值则 unsigned int → long。否则两者都转换为 unsigned long。 如果一个是 long另一个转换为 long。否则如果一个是 unsigned int另一个转换为 unsigned int。否则两者都转换为 int。 这就是所以内容了内容较多大家需要多多理解。下期我们一起练习掌握它
整篇文章码字不易大家能不能点个赞呢谢谢
有什么问题可以在评论区讨论
备注文章中有部分图片来自于百度