c – char val =’abcd’.使用多字符char
我对编译器如何处理具有多个字符的char变量感到困惑.我知道char是1个字节,它可以包含一个像ASCII这样的字符.
但是当我尝试: char _val = 'ab'; char _val = 'abc'; char _val = 'abcd'; 它们编译得很好,当我打印_val时,它总是打印出最后一个字符.但是当我这样做的时候 char _val = 'abcde'; 然后我收到编译错误:
所以我的问题是: >为什么编译器总是在使用多个字符时使用最后一个字符?在这种情况下编译器机制是什么. 我正在使用Visual Studio 2013. 谢谢. 解决方法
[lex.ccon] / 1:
大多数编译器只是将字符值按顺序移动到一起:这样,最后一个字符占据最低有效字节,倒数第二个字符占据最低有效字符旁边的字节,依此类推. 将此int转换回char将具有一个实现定义的值 – 可能只是从int modulo 256的值中获得.这只会给你最后一个字符.
因为在你的机器上,一个int可能大四个字节.如果以上确实是编译器排列多字符常量的方式,则不能将五个char值放入int中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |