c语言 无符号数 结构体指针 整型提升
来源:互联网 发布:太祖军事能力知乎 编辑:程序博客网 时间:2024/05/17 09:07
12月21日随笔
无符号数 unsigned
它和普通的变量定义是一样的,只不过差别在于系统对这块内存空间的识别不同。在下例中给n传的实参是-1,在函数中以%d打印仍是-1.而以无符号数打印则是32位全1的二进制数转换的整数。
#include <stdio.h>void func(unsigned int n){ printf("%d\n",n); //-1 printf("%u",n); //4294967295}int main(){ int a =-1; func(a);}
结构体指针
结构体实例使用 . 访问成员
结构体指针使用 -> 访问成员更为便捷
-> 其实执行了两步,首先解引用指针,然后作为实例访问结构体变量。
struct stu s;struct stu* p = &s;(*p).age = 9;p->age = 9;
整型提升
例如
char a = 1;char b = 127;char c = a + b;printf("%d %d",a + b, c); // 128 -128(10000000)负零解析为-128
C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字 符和短整型操作数在使用之前被转换为普通整型,这种转换称为『整型提升』。
在上例中a和b都被提升为整型来参与运算,
a = 00000000..00000001b = 00000000..01111111相加 = 00000000..10000000 //128//而保存在c中以后,最高位变成符号位c = 10000000 //-128
关于编译顺序的问题
c = (++a) + (++a) + (++a) ;
上述表达式在不同的编译器中编译结果是不尽相同的,仅从运算符优先级和结合型不能确定最终的值。比如上式不能知道在编译后到底是先执行完三个括号里的自加,还是先执行前两个括号然后相加再执行后一个括号。这种式子属于错误表达,没有研究的价值。
阅读全文
0 0
- c语言 无符号数 结构体指针 整型提升
- c语言之无符号整型
- C语言无符号整型的输出
- C语言strtoul()函数:将字符串转换成unsigned long(无符号长整型数)
- 与C语言不同,JAVA里没有无符号整型
- c 语言中无符号整型(unsigned)的溢出
- 与C语言不同,JAVA里没有无符号整型
- 与C语言不同,JAVA里没有无符号整型
- C语言中的无符号数和有符号数
- C语言中的有符号数与无符号数
- c语言中的有符号数和无符号数
- 无符号数陷阱Unsignged C语言
- C语言中的无符号数
- 【C语言】整型溢出和整型提升
- C 语言中的整型提升
- C语言进阶:整型提升
- C语言进阶:整型提升
- c语言有符号数和无符号类型计算
- 数据库里面的字段为空的小问题
- Java的I/O流
- bzoj 4819: [Sdoi2017]新生舞会 01分数规划 二分图最优匹配
- HDU 1426 Sudoku Killer
- spams-matlab-v2.5
- c语言 无符号数 结构体指针 整型提升
- 工厂模式
- Font Awesome(十九)
- 哈尔滨理工大学第七届程序设计竞赛初赛(高年级组)G 逃脱【BFS】
- 完美解决Android的EditText因回车键失去焦点问题
- Maven学习笔记(二)——Maven目录结构、pom.xml解析&基础命令(一)
- java实现在线支付
- 9.dubbo多协议与多注册中心
- MapReduce Tool 接口