学习日记:数据类型2

目录

1.转义字符

2.隐式类型转换

[2.1 强制类型转换](#2.1 强制类型转换)

[2.2 不同类型间赋值](#2.2 不同类型间赋值)

[3.运算符 表达式](#3.运算符 表达式)

[3.1 算术运算符](#3.1 算术运算符)

[3.2 算术运算优先级](#3.2 算术运算优先级)

[3.3 赋值运算](#3.3 赋值运算)

[3.3.1 不同类型间混合赋值](#3.3.1 不同类型间混合赋值)

[3.4 逗号运算](#3.4 逗号运算)

4.生成随机数

[5. 每日一练](#5. 每日一练)


1.转义字符

'\n' 表示换行

'\t' 表示调到下一个制表符(一个制表符占8个空格)

'\b' 表示退格

'\r' 回车,光标回到当前行的开头

'\\' 表示打印一个 \

'\'' 表示打印 '

'\''' 表示打印 "

'\101' 表示转义八进制

'\x41' 转义十六进制

2.隐式类型转换

低精度和高精度混合运算时,低精度1往高精度转。

2.1 强制类型转换

(类型)运算数

注:不会影响运算数本身

复制代码
float a = 12.34;
(int) a

2.2 不同类型间赋值

3.运算符 表达式

3.1 算术运算符

  • 、 - 、 * 、/ 、 %

注:

/ (1)两个整数相除,相当于取整的效果

(2)除法运算中除数不能为0

% (1)除数不能为0

(2)运算数必须为整数。

(3)结果的符号取决于做操作数

另:取余运算可用于:判断奇数和偶数(%2 == 1 奇数; %2==0 偶数);取范围(%N 得到0~N-1的数)

++ 自增:表示一次+1;

(1)a++ :后置加加,先用(表达式的结果) 后加(让a自增)

(2)++a :前置加加 ,先加(让a自增) 后用(表达式的结果)

注:a++和++a如果单独使用,效果上没有区别,运算数必须是一个可以修改的变量,浮点类型也可以自增自减。

ps:i++和++i哪个效率高?

答:++i效率更高。

-- 自减:表示一次-1;

3.2 算术运算优先级

3.3 赋值运算

赋值运算符" = ":作用是将一个数据赋给一个变量。

eg:a = 10 结果是a的值,类型为a的类型

注:可以连续赋值 ---- a = b = c = 10

+= 、 -= 、 *= 、 /= 、 %= 也是赋值运算

eg: a += 1 相当于 a = a + 1

3.3.1 不同类型间混合赋值

(1)高精度的值赋给低精度会产生精度丢失。

(2)长类型的值赋给短类型会产生高位截断。

(3)短类型的值赋给长类型

a:无符号短类型赋给长类型------高位补零

b:有符号短类型赋给长类型------符号位扩展(高位补符号位)

3.4 逗号运算

逗号运算为顺序求值运算符

语法:表达式1,表达式2,表达式3...,表达式n

复制代码
1+2,a++,3+4;

运算过程:从左往右依次运算,结果为整个式子中最后一个表达式的结果。

4.生成随机数

rand();

eg:随机生成10个100以内的数

复制代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(void)
{

    int i = 0;
    srand(time(NULL));
    for(i = 0;i<10;i++)
    {
        printf("%d\n",rand()%100);
    }

    return 0;

}

运行结果:

5. 每日一练

从终端获得两个2位数,

将第一个数个位作为新数的千位,

将第二个数个位作为新数的百位,

将第二个数的十位作为新数的十位

将第一个数的十位作为新数的个位,

打印该新数。

复制代码
#include<stdio.h>

int main(void)
{
    int a,b,c1,c2,c3,c4,num;
    printf("Input two num:");
    scanf("%d %d",&a,&b);

    c1 = a % 10 * 1000;
    c2 = b % 10 * 100;
    c3 = b / 10 * 10;
    c4 = a / 10;

    num = c1+c2+c3+c4;

    printf("num = %d\n",num);

    return 0;
}

运行结果:

相关推荐
0xDevNull20 小时前
Linux切换JDK版本详细教程
linux
进击的丸子20 小时前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
Johny_Zhao2 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
RuoZoe3 天前
重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium
c语言
chlk1234 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑4 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件4 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号4 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash4 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI5 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github