user-0 提问: 如图，解释下题目和答案

回复:
user: user-1
content: 对前面三个选项举个例子如下：  #include <stdio.h>  int main() {     double a = 2;     int b;     b = 3L*a;                       //这里在3后面加L表示这个3是Long int类型，L大小写都可以，不加L默认3是int类型     printf("b = %d\n", b);   //虽然前面是用long int和double类型相乘，但并不影响这里的结果。输出b依然是int类型     b = 3F*a;                       //这里在3后面加L表示这个3是float类型，F大小写都可以，不加F默认3是int类型     printf("b = %d\n", b);        b = 3U*a;                      //这里在3后面加L表示这个3是unsigned类型，U大小写都可以，不加U默认3是int类型     printf("b = %d\n", b);      return 0; }  还有不懂的请继续追问

user: user-0
content: 引用 7 楼 weixin_45906870的回复:选D，C语言规定用0X表示十六进制的前缀  举个例子： #include <stdio.h>  int main() {     int c;     c = 0x80;      //这里的80是十六进制的，因为前面加了0x，x用大写或小写都可以     printf("%d\n", c);    //%d是以十进制的方式输出，十六进制的80转变成十进制就是128      return 0; }  补充一下，如果是用八进制表示一个数字，那就在这个数字前面添加一个零，比如 c = 080，表示八进制的八十 十进制没有前缀 前面三个能不能举个例子

user: user-0
content: 引用 16 楼 weixin_45906870的回复: 奇怪，我的编译器是codeblocks，编译没问题呀.... 你看错了，0x是16进制

user: user-0
content: 引用 13 楼 m0_47292308的回复:[quote=引用 9 楼 weixin_45906870的回复:]对前面三个选项举个例子如下：  #include <stdio.h>  int main() {     double a = 2;     int b;     b = 3L*a;                       //这里在3后面加L表示这个3是Long int类型，L大小写都可以，不加L默认3是int类型     printf("b = %d\n", b);   //虽然前面是用long int和double类型相乘，但并不影响这里的结果。输出b依然是int类型     b = 3F*a;                       //这里在3后面加L表示这个3是float类型，F大小写都可以，不加F默认3是int类型     printf("b = %d\n", b);        b = 3U*a;                      //这里在3后面加L表示这个3是unsigned类型，U大小写都可以，不加U默认3是int类型     printf("b = %d\n", b);      return 0; }  还有不懂的请继续追问 谢谢你了，我终于懂了[/quote] 还想问一下，输出结果是啥，修改之处会有啥不一样，我编译器报错了

user: user-0
content: 再问一下，输出结果是啥，修改之处会有啥不一样

user: user-1
content: 选D，C语言规定用0X表示十六进制的前缀  举个例子： #include <stdio.h>  int main() {     int c;     c = 0x80;      //这里的80是十六进制的，因为前面加了0x，x用大写或小写都可以     printf("%d\n", c);    //%d是以十进制的方式输出，十六进制的80转变成十进制就是128      return 0; }  补充一下，如果是用八进制表示一个数字，那就在这个数字前面添加一个零，比如 c = 080，表示八进制的八十 十进制没有前缀

user: user-1
content: 奇怪，我的编译器是codeblocks，编译没问题呀....

user: user-2
content: 引用 14 楼 weixin_45906870 的回复:既然是八进制 怎么可能有8  080是错的可以的，你可以先编译试试，不会出错的[/quote] [Error] E:\*****.c:4:2: invalid digit "8" in octal constant

user: user-1
content: 引用 10 楼 lin5161678 的回复：[quote=引用 7 楼 weixin_45906870 的回复:] 选D，C语言规定用0X表示十六进制的前缀  举个例子： #include <stdio.h>  int main() {     int c;     c = 0x80;      //这里的80是十六进制的，因为前面加了0x，x用大写或小写都可以     printf("%d\n", c);    //%d是以十进制的方式输出，十六进制的80转变成十进制就是128      return 0; }  补充一下，如果是用八进制表示一个数字，那就在这个数字前面添加一个零，比如 c = 080，表示八进制的八十 十进制没有前缀既然是八进制 怎么可能有8  080是错的[/quote]可以的，你可以先编译试试，不会出错的

user: user-0
content: 引用 9 楼 weixin_45906870的回复:对前面三个选项举个例子如下：  #include <stdio.h>  int main() {     double a = 2;     int b;     b = 3L*a;                       //这里在3后面加L表示这个3是Long int类型，L大小写都可以，不加L默认3是int类型     printf("b = %d\n", b);   //虽然前面是用long int和double类型相乘，但并不影响这里的结果。输出b依然是int类型     b = 3F*a;                       //这里在3后面加L表示这个3是float类型，F大小写都可以，不加F默认3是int类型     printf("b = %d\n", b);        b = 3U*a;                      //这里在3后面加L表示这个3是unsigned类型，U大小写都可以，不加U默认3是int类型     printf("b = %d\n", b);      return 0; }  还有不懂的请继续追问 谢谢你了，我终于懂了

user: user-1
content: 引用 11 楼 lin5161678 的回复：[quote=引用 9 楼 weixin_45906870 的回复:] 对前面三个选项举个例子如下：  #include <stdio.h>  int main() {     double a = 2;     int b;     b = 3L*a;                       //这里在3后面加L表示这个3是Long int类型，L大小写都可以，不加L默认3是int类型     printf("b = %d\n", b);   //虽然前面是用long int和double类型相乘，但并不影响这里的结果。输出b依然是int类型     b = 3F*a;                       //这里在3后面加L表示这个3是float类型，F大小写都可以，不加F默认3是int类型     printf("b = %d\n", b);        b = 3U*a;                      //这里在3后面加L表示这个3是unsigned类型，U大小写都可以，不加U默认3是int类型     printf("b = %d\n", b);      return 0; }  还有不懂的请继续追问后缀f 要求是浮点常量  3f是错的 [/quote]感谢

user: user-2
content: 引用 9 楼 weixin_45906870 的回复:对前面三个选项举个例子如下：  #include <stdio.h>  int main() {     double a = 2;     int b;     b = 3L*a;                       //这里在3后面加L表示这个3是Long int类型，L大小写都可以，不加L默认3是int类型     printf("b = %d\n", b);   //虽然前面是用long int和double类型相乘，但并不影响这里的结果。输出b依然是int类型     b = 3F*a;                       //这里在3后面加L表示这个3是float类型，F大小写都可以，不加F默认3是int类型     printf("b = %d\n", b);        b = 3U*a;                      //这里在3后面加L表示这个3是unsigned类型，U大小写都可以，不加U默认3是int类型     printf("b = %d\n", b);      return 0; }  还有不懂的请继续追问后缀f 要求是浮点常量  3f是错的

user: user-2
content: 引用 7 楼 weixin_45906870 的回复:选D，C语言规定用0X表示十六进制的前缀  举个例子： #include <stdio.h>  int main() {     int c;     c = 0x80;      //这里的80是十六进制的，因为前面加了0x，x用大写或小写都可以     printf("%d\n", c);    //%d是以十进制的方式输出，十六进制的80转变成十进制就是128      return 0; }  补充一下，如果是用八进制表示一个数字，那就在这个数字前面添加一个零，比如 c = 080，表示八进制的八十 十进制没有前缀既然是八进制 怎么可能有8  080是错的

user: user-0
content: 引用 3 楼 Simple-Soft的回复:选D，x不能放在后面，可以放到前面，int i=0x123; 请问这样写是表示什么

user: user-0
content: 引用 1 楼 Zhao Tao的回复:答案是X啊 这些字幕加在数字后面表示后缀更容易区分而已，L表示long类型，F是float，U是unsigned 能说说怎么回事吗……哭晕在厕所

user: user-0
content: 那怎么加，比如说

user: user-3
content: 选D，x不能放在后面，可以放到前面，int i=0x123;

user: user-4
content: 采纳一下吧。

user: user-4
content: 答案是X啊 这些字幕加在数字后面表示后缀更容易区分而已，L表示long类型，F是float，U是unsigned