C语言自学笔记 1

P26 printf

十六进制有小写和大写的区别,加井号的作用可以把前面的0x或者0X显示出来(八进制也可以显示)

printf("hexadecimal:%#x",number)

printf("hexadecimal:%#X",number)

各种数据类型所对应占位符的类型:

15 %h:short %hu: unsigned short

16 %l:long %lu: unsigned long

17 %ll: long long %llu: unsigned long long

printf(“随便一个数:%-10d”, number)    1 标识符

printf(“随便一个数:%10d”, number)     2

printf(“随便一个数:%+10d”, number)    3 标识符

printf(“随便一个数:%010d”, number)    4    先导数

1: 空出十个位置 number向右对齐

2: 空出十个位置 number向左对齐

3: 空出十个位置 number居中

4: 空出十个位置 number不够10位前面用0填充

P29 unsigned

unsigned int 无符号整数类型

写声明 unsigned int number = 10

在向 printf 里代的时候一定不要用%d,务必要用%u

但如果声明是负数,%d 运行可能不会出错,但是 %u 会产生随便一个数 (溢出),但是还是务必使用%u(这是规范)

包括之后for循环里的index也都是unsigned int类型

在上表中 short 类型非常重要

因为它占用的内存空间比较小

但同时它所可以接受的数的范围是比较小的

如果在项目中所用到的数的大小一定不会超过这个范围(防止溢出)

那么就可以使用 short 类型来节省空间

pg: short 的占位符是 %hd

unsigned 的占位符是 %hu

p31 long和longlong与CPU架构

CPU架构的位数

兼容

内存条

windows XP 32位->64位

windows 7 64位

32位的操作系统(CPU架构)中 long 占4个字节

64位的操作系统(CPU架构)中 long 占8个字节

但是在vs中无论是32位还是64位 long 都是只占4个字节

32位的操作系统(CPU架构)中 longlong 占8个字节

64位的操作系统(CPU架构)中 longlong 还是占8个字节

p32size_t类型与sizeof的使用

sizeof(数据类型) 这个内置函数的占位符是%zu

返回该数据类型所占的字节数

026.固定宽度整数类型 include

在实际开发中,通常不会用到int short long的类型,会用以下的形式来代替

开头需要加上 include

ctrl+鼠标左键 可以打开include进行查看源代码

在用 int..._t 时,举个例子:

在这里, int16_t 对应的是 short类型,按理说占位符应该是%h, 但写出来发现会报错

实际上,正确的占位符形式应该是%hd ,如果是无符号整数的话那么占位符就应该是%hu

以此类推,int64_t 就应该为%lld,uint64_t 就为%llu

再用到数字比较大的时候:

后缀会有一个U是一个字面量,让编译器直接把数字当作 unsigned int 来处理,防止到后面一些潜在的问题。

字面量也会有L、LL、UL、ULL

(long,long long,unsigned long,unsigned long long)。

uint32_t往后的需要加字面量

注意:

事实上数字后面的字面量下面这种类型也是可以的:

028.隐式与显式类型转换

类型转换(一定要用显式)

1.无符号转换为有符号 eg: signed --> unsigned int8_t --> uint8_t

2.有符号转换为无符号 eg: unsigned --> signed uint8-t --> int8-t

3.大范围转换为小范围 eg: int8_t --> int16_t

4.小范围转换为大范围 eg: int16_t --> int8_t

无论如何,从小范围转换成大范围肯定会出现溢出

以下为类型转换模板:

行数

1 类型1 变量名1 = 赋值 //赋值声明

2 类型2 变量名2 = (类型2)变量名1

//显式转换(等号右侧先转化为类型二接着再把值赋给变量二)

//在写代码的时候一定要加上涂色这一部分,不然溢出后出现问题报错容易察觉不到

3 printf("···")

但是我觉得显示转换应该用一下这种形式比较好:

(先声明再转换,就是之后在代码中不太好找)

或者

2 类型2 变量名2 = 变量名1 //隐式转换

3 printf("···")

或者

2 变量名2 = 变量名1 //隐式转换

3 printf("···")

要想找一个数据类型最大、最小值:

也在 include 中,Ctrl + 鼠标左键 翻一下就可以找到

029.固定宽度整数类型格式化输出 include

#include //首先,输入头文件

//然后,Ctrl + 鼠标左键

之后,在格式化输出的时候如下:

主要是在显示开发的过程中,其实根本不怎么用得到%d, %u ,%llu这样的占位符

因为第一是容易忘,第二是不直观。

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值