标识符123456789

img


为什么c选项不是非法的定义语句,不是应该为short c=0123,选项b又为什么是非法语句,不是无符号可以为负数吗?

c是变量名呀,允许你定义成c,就不允许别人起名叫c2吗,莫名其妙啊
u是无符号数,哪来的负数?

int整型可以划分为带符号的(signed)和无符号的(unsigned)两种,带符号类型可以表示正数、负数或0,无符号类型则仅能表示大于等于0的值。在默认情况下声明的整型变量都是有符号的类型,如果需声明无符号类型的话就需要在类型前加上unsigned关键字。B选项给无符号整型变量a赋值-100是一种错误的语法;
short型变量的取值范围为-32768~+32767,0123表示八进制或十进制都没有超出short的取值范围。

标识符(简单理解为变量名)可以是由字母,数字,下划线_组成,但只能是字母或下划线开头,不允许是数字开头。c2是字母开头,后面跟数字所以没问题。012是一个8进制数,也没问题。
无符号类型你就把符号理解成数字的那个负号“-”即可,没有负号的就是≥0的数,数字后面加u本来表示无符号数,但这个又是负数,产生了矛盾

B和c选项在编译的时候都能通过
unsigned int i = -100u; 这个是编译能通过,但是逻辑上错了,和预期结果不符,估计这个问题不仅仅是语法上对还得是预期结果
short c2= 0123; 这个c2可以这样命名的,只要不是一数字开头的命名都是合法的。 0开头表示这个数是8进制的数,没有任何语法和逻辑,预期错误

有符号是可以为负可以为正的,无符号只能为正
c2是变量名没问题
short在C语言中是定义一种整型变量家族的一种。C语言中有三种整数类型,分别为 short、int 和 long。int 称为整型,short 称为短整型,long 称为长整型。
中文名
短整型

unsigned指的是无符号的,不能带负号吧