user-0 提问: 大神解释下c语言中的引号如何被编译器解释的。

回复:
user: user-1
content: 引用 5 楼 u011416173 的回复:[quote=引用 3 楼 Bokutake 的回复:] C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。 没太清除额： 1.填充？是什么意思？ 2.‘abc’肯定是解释成一个字符对吧？那你的意思是说解释成其中哪个字符是不确定的么？还望多多赐教 啊。谢了。 3.如果不确定那你的case语句不是有可能无法对应了，因为存在不同的解释结果？[/quote]  引用 5 楼 u011416173 的回复:[quote=引用 3 楼 Bokutake 的回复:] C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。 没太清除额： 1.填充？是什么意思？ 2.‘abc’肯定是解释成一个字符对吧？那你的意思是说解释成其中哪个字符是不确定的么？还望多多赐教 啊。谢了。 3.如果不确定那你的case语句不是有可能无法对应了，因为存在不同的解释结果？[/quote]  填充的意思是如果你的字符不够4个字节（int宽度）那么，在前面加0还是后面加0，是编译器自己决定的。 'abc'其实是当做一个整数用，值有可能是0x616263，也可能是0x61626300。也可能顺序倒过来，按照x86的int那种小端字节序。 意思是在同一个编译器下是确定的，但是不同编译器的规则可能不同。如果你只用一个编译器，或者不在不同库的接口中使用这种多字节字面量，而是在模块内部使用的话，基本是没问题的。

user: user-0
content: 引用 13 楼 zhao4zhong1 的回复:计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。 （Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。）  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！学习了

user: user-2
content: 计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。 （Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。）  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！

user: user-3
content: 引用 5 楼 u011416173 的回复:[quote=引用 3 楼 Bokutake 的回复:] C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。 没太清除额： 1.填充？是什么意思？ 2.‘abc’肯定是解释成一个字符对吧？那你的意思是说解释成其中哪个字符是不确定的么？还望多多赐教 啊。谢了。 3.如果不确定那你的case语句不是有可能无法对应了，因为存在不同的解释结果？[/quote] 看了一下 如果int a='abc'这样定义 vs编译器是a=0x616263 这样的

user: user-4
content: 引用 3 楼 Bokutake 的回复:C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。 学习了～

user: user-0
content: 引用 9 楼 AnYidan 的回复:[quote=引用 5 楼 u011416173 的回复:] [quote=引用 3 楼 Bokutake 的回复:] C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。 没太清除额： 1.填充？是什么意思？ 2.‘abc’肯定是解释成一个字符对吧？那你的意思是说解释成其中哪个字符是不确定的么？还望多多赐教 啊。谢了。 3.如果不确定那你的case语句不是有可能无法对应了，因为存在不同的解释结果？[/quote]  一种不推荐使用、不可移植的写法[/quote] 谢了！

user: user-5
content: 引用 5 楼 u011416173 的回复:[quote=引用 3 楼 Bokutake 的回复:] C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。 没太清除额： 1.填充？是什么意思？ 2.‘abc’肯定是解释成一个字符对吧？那你的意思是说解释成其中哪个字符是不确定的么？还望多多赐教 啊。谢了。 3.如果不确定那你的case语句不是有可能无法对应了，因为存在不同的解释结果？[/quote]  一种不推荐使用、不可移植的写法

user: user-6
content: 引用 7 楼 u011416173 的回复:[quote=引用 6 楼 mujiok2003 的回复:] [quote=引用 3 楼 Bokutake 的回复:] C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。  ++[/quote] 大神你肯定也知道了其中意思，那能推荐个链接让我看看么，我想要详细点的说明额。[/quote]  C++也是这么说的，  引用An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal has type int and implementation-defined value.  它的值由编译器（的实现）决定，没有确定结果。 也就说，避免使用它。 你就不必深究了。  关于字节序：搜索byte order 关于内存对齐方式(填充方式）：搜索memory alignment

user: user-0
content: 引用 6 楼 mujiok2003 的回复:[quote=引用 3 楼 Bokutake 的回复:] C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。  ++[/quote] 大神你肯定也知道了其中意思，那能推荐个链接让我看看么，我想要详细点的说明额。

user: user-6
content: 引用 3 楼 Bokutake 的回复:C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。  ++

user: user-0
content: 引用 3 楼 Bokutake 的回复:C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。 没太清除额： 1.填充？是什么意思？ 2.‘abc’肯定是解释成一个字符对吧？那你的意思是说解释成其中哪个字符是不确定的么？还望多多赐教 啊。谢了。 3.如果不确定那你的case语句不是有可能无法对应了，因为存在不同的解释结果？

user: user-7
content: 引用 3 楼 Bokutake 的回复:C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。  赞一个,VS会编译为4个连续的字节

user: user-1
content: C99标准：6.4.4.4p10:   "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."  这种multicharacter literal（多字符字面量）是合法的，但是编译器以那种字节序和填充方式安排字符是由它自己决定的。不推荐使用它。但是有的时候可以利用它优化代码可读性。比如用4个字符的字面量代表一个UINT常量，可以用在switch里：case 'TAG1'这样。

user: user-8
content: ‘abc’这样编译能通过吗？我也很想知道，

user: user-9
content: 如何被解释。。好 高端 。。。的问题。。   微观