各位少年:
我们今天来分享signed和unsigned关键字,分别为有符号的和无符号的
C语言使用signed和unsigned关键字修饰字符型和整数类型的。
signed关键字,表示一个类型带有正负号,包含负值;
unsigned关键字,表示该类型不带有正负号,只能表示零和正整数。
对于int类型,默认为带有正负号的,也就是说int等同于signed int。
简单点来说(unsigned就是无符号的,只能表示正整数,signed是有符号的表示有符号的整数(编译器默认为是这个))
#include<stdio.h> int main() { unsigned int num=20;//只能表示正整数,负数没法表示 return 0; }
我们都知道计算机是由二进制转换的,一个字节就是八个比特位(2进制是0和1)那么一个是四个比特位,
最高位是正数是0开头负数是1,那么很显然unsigned无符号的最高位肯定是0,有符号的signed带判定。
我们再来看一段有趣的代码
#include<stdio.h> int main() { int age; printf("%d",age); return 0; }
这里的age没初始化会出现一个东西叫做值随机,但是VS对代码要求特别高,这样的代码是编译不过去的。
#include int ch; int main() { printf(“%d\n”,ch) return 0; }
全局变量没初始化是0,这个我已经验证过了。
下面是全局变量和局部变量的定义
全局变量:在大括号外部定义的变量就是全局变量,全局变量的使用和范围更广,整个程序中使用,都是有办法使用的。
局部变量:在大括号内部定义变量和就是局部变量,局部变量的使用范围是比较局限,只能在自己所在的局部范围内使用的。