学习日记:数据类型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;
}

运行结果:

相关推荐
a_安徒生16 分钟前
linux安装TDengine
linux·数据库·tdengine
心怀梦想的咸鱼22 分钟前
UE5 第一人称射击项目学习(四)
学习·ue5
追风赶月、22 分钟前
【Linux】线程概念与线程控制
linux·运维·服务器
小字节,大梦想24 分钟前
【Linux】重定向,dup
linux
AI完全体26 分钟前
【AI日记】24.11.22 学习谷歌数据分析初级课程-第2/3课
学习·数据分析
Mephisto.java1 小时前
【大数据学习 | Spark-Core】Spark提交及运行流程
大数据·学习·spark
blessing。。1 小时前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
PandaCave1 小时前
vue工程运行、构建、引用环境参数学习记录
javascript·vue.js·学习
yuwinter2 小时前
鸿蒙HarmonyOS学习笔记(2)
笔记·学习·harmonyos
2202_754421542 小时前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言