主要是在原有知识基础上对自己知识的进一步补充和扫盲,且均在32位基础上。
数据的类型相关知识
1.基本类型
整型数据
short (int)2个字节,16位 //括号内为可以省略,一个字节8位
int 4个字节
long (int) 4个字节
long long (int) 8个字节
(unsigned和signed进行组合成无符号和有符号)
字符型(也可以看成另类的整型)
char 1个字节
浮点型
float 4个字节
double 8个字节
构造类型
数组、结构体、联合体、枚举
指针类型
空类型
主要是void的用法,除了基本的,还有用处
void * 定义通用指针
其次也可以划分为常量和变量,注意无二进制常量,因为其他均是转换二进制代码
浮点型一般默认为double型
%u为无符号输出
补充
‘\r’——为enter
效果和作用,就是将光标移动到首位,然后开始覆盖
#include "stdio.h"
void main()
{
printf("%d\r111\n", 10000);
}
运行结果
gec@ubuntu:/mnt/hgfs/share-2$ gcc one.c -o one
gec@ubuntu:/mnt/hgfs/share-2$ ./one
11100
111对10000进行了覆盖,不在同一个输出‘\’时,只会输出111
变量的左、右值
左值是表示变量为一个地址
右值是表示变量为一个值
#include "stdio.h"
void main()
{
int a=10;//a表示一个地址,存入10这个常量
int b=a;//a表示一个值,将其赋值给b
a=100;
printf("%d\n", a);
printf("%d\n", b);//且注意a和b均是单独开辟的空间,无直接联系
}
结果
gec@ubuntu:/mnt/hgfs/share-2$ gcc one.c -o one
gec@ubuntu:/mnt/hgfs/share-2$ ./one
100
10
不同字节类型赋值时注意点:除了基本的赋值关系外,注意数据仅与原有类型有关,与输出%d或者%u无多大关系,%d或者%u是转换后将这一串补码,看成一个有符号还是无符号的输出。
#include "stdio.h"
void main()
{
int a=-1;
char b=a;
printf("%u\n", b);
}
分析:int时的补码:0xFFFFFFFF
赋给char后:1111 1111
然后以无符号int输出,但char为有符号:高位补1,则补码位=原码:0xFFFFFFFF
将补码看成有符号输出
则输出:4294967295
gec@ubuntu:/mnt/hgfs/share-2$ gcc one.c -o one
gec@ubuntu:/mnt/hgfs/share-2$ ./one
4294967295
@3