关于语句
float a = 1.6f;这个语句为什么是对的,不应该是 float a = %1.6f 吗 ?
char c = c;
这个是错的,是不是因为c不能赋给c,还是因为char打印的是字符,c不属于; 本帖最后由 jackz007 于 2022-11-26 14:54 编辑
常量带后缀是在声明常量的类型。例如,1.6f 意思是在声明 1.6 是浮点数,又比如,1234LL 是在声明 1234 是 long long 型的整型数,需要用 8 个字节进行存储,如果没有LL后缀,那就会用 4 个字节。至于 %1.6f 只是在 printf() 里使用的格式描述符,要求 printf() 按照我们喜欢的格式(样子)输出浮点数(文本)。
int c = c,这一条语句当然是错的,在 C 语言中, 5 是一个常量,'c' 也是一个常量,但是,c 是一个标识符,也就是说,编译器会当它是一个变量,可是,你之前又并未定义这个变量 c,现在,却要在定义一个变量的时候,要用这个变量(c),去进行初始化,那肯定不可以呀,道理很简单,请问,你知道这个时候 c 的值是多少吗? float a=1.6或者float a=1.6f都没有问题,但是float a=%1.6f这个就有问题了。%这个符号有两个作用:一是求余,如9%3的值是0。二是格式化输出时会用到%,如printf("%f",a)以浮点数在屏幕上输出a的值。第二个问题char c = c是不是写错了?你的意思是不是把字符c给字符变量c?如果是的话那就这样写 char c = 'c';
float a = 1.6f执行后a=1.6
%1.6f是占位符,表示读入六位小数的浮点数,不是合法常量
char c=c里 要么是c未定义(之前未声明c标识符),要么是c标识符重复(之前声明过c标识符) float a = 1.6f;
没有错,后面的f 意思是把 1.6 这个数转化为 float,不过没有太大的必要,你说的 % 那个是在 printf, scanf 的格式占位符中才会有
char c = c;
这条语句可能错误,不管分号的事,每条语句后面都得有分号,这条语句我试了试,在 windows10 中是可以通过的,并且这条语句应该会把 c 初始化为 '\0',这个取决于编译器,Unix 好像也不会报错,这就很神奇
这条语句是否对错取决于编译器,一切都由编译器决定来怎么做,所以,我们也不能说他是对的,也不能说是错的,但是,最好不要用这种写法,也最好忘记这种写法
页:
[1]