- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对编译器如何处理具有多个字符的 char 变量感到困惑。我知道 char 是 1 个字节,它可以包含一个字符,如 ASCII。
但是当我尝试时:
char _val = 'ab';
char _val = 'abc';
char _val = 'abcd';
它们编译得很好,当我打印 _val 时,它总是打印最后一个字符。但是当我这样做的时候
char _val = 'abcde';
然后我得到一个编译器错误:
Error 1 error C2015: too many characters in constant
所以我的问题是:
我正在使用 Visual Studio 2013。
谢谢。
最佳答案
[lex.ccon]/1:
An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal [..] is conditionally-supported, has type
int
, and has an implementation-defined value.
Why does the compiler always takes the last character when multiple characters are used? What is the compiler mechanism in this situation.
大多数编译器只是按顺序将字符值一起移动:这样最后一个字符占据最低有效字节,倒数第二个字符占据最低有效字节旁边的字节,依此类推。
IE。 'abc'
相当于 'c' + ((int)'b')<<8) + (((int)'a')<<16)
(Demo)。
正在转换 int
回到char
将有一个实现定义的值——这可能只是从 int
的值中产生的模 256。这只会给你最后一个字符。
Why did I get a too many characters error when I put 5 characters. 2 characters is more than what a char can handle so why 5?
因为在你的机器上有一个 int
大概是四个字节大。如果上面确实是你的编译器排列多字符常量的方式,他不能把五个 char
值转换为 int
.
关于c++ - 字符值 = 'abcd'。使用多字符 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590281/
我想写我自己的 compareTo 方法,所以我写了这段简单的代码: public int myCompare(String a, String b) { int min = Math.min
这个问题在这里已经有了答案: Why use parentheses when returning in JavaScript? (9 个回答) 关闭 6 年前。 我正在努力处理一些 JavaScr
void main() { printf("ABCD"); printf("\n"); printf("ABCD" +1); printf("\n"); printf("ABC
为什么在字符串 abcd 1234 abcd 上使用正则表达式 .* 时会得到两个匹配项?请参阅https://regex101.com/r/rV8jfz/1 . 从regex101给出的解释中,我可
为什么在字符串 abcd 1234 abcd 上使用正则表达式 .* 时会得到两个匹配项?请参阅https://regex101.com/r/rV8jfz/1 . 从regex101给出的解释中,我可
def censor2(filename): infile = open(filename,'r') contents = infile.read() contentlist
经过大量的反复试验,我是这样做的: #include #include #include /*Prototype of a hashtag function*/ void hashtag(cha
首先让我承认,通过以不重叠的方式命名类型和变量来避免这种情况很容易。 尽管如此,我很好奇在以下情况下会发生什么: typedef char jimmypage; jimmypage *jimmypag
我正在研究“c 编程语言”练习 2.4,它删除 s1 中与字符串 s2 中的任何字符匹配的每个字符。下面是我的代码,它有效。但是,如果我将 Main 函数中的定义从 char c1[ ]="abcde
所以我们创建了一个 map 。我们想要获取 some_type blah = map_variable[some_not_inserted_yet_value] 如果之前没有创建,这将调用向 map
Directory.GetFiles(LocalFilePath, searchPattern); MSDN 注释: When using the asterisk wildcard characte
到目前为止,当你输入 f 时没有任何反应,它只在输入 0 时有效,但我想要它,所以当你按 f 时,你会得到这个 a ab abc abcd abcde abcdef #include using n
每当我使用 vim 时,按上、下、左、右,它分别映射到 A、B、C、D,但仅限于插入模式。在插入模式之外,这些键可以正常工作。我检查了 .vimrc 文件,没有发现任何可能导致此问题的可疑内容。 我使
给定与属性 ABCD 的关系,知道没有记录具有 NULL 值,如何编写证明函数依赖关系 A → B 的 SQL 语句? 最佳答案 SELECT * from R r1, R r2 where r1.A
我正在使用一些不是我编写的旧代码,并且需要一些帮助来理解它。 (function() { var abc = "SORocks"; $.fn[abc] = function (x) {
昨天我正在解决 Spoj 问题 ABCD:http://www.spoj.com/problems/ABCD/ 我得到了错误的答案,但我真的不明白为什么。我已经尝试了论坛和评论中的所有测试用例。是否接
我有一个像 'g fmnc wms bgblr rpylqjyrc gr zw fylb' 这样的字符串。我在 python 中使用 .split() 函数并获取 ['g', 'fmnc', 'wms
如何编写 Javascript 正则表达式来匹配除给定字符串(“ABCD”)以外的所有内容? 类似于 /[^ABCD]/ 除了我不想匹配所有不是字母 A、B、C 或 D 的东西。我想匹配所有不是的东西
这个问题在这里已经有了答案: How do I compare strings in Java? (23 个回答) 关闭 8 年前。 String s1 = new String("anil
我知道还有其他关于语法 class #> #What does this outputs mean??????? def onSelf.SelfMet puts 'This is a met
我是一名优秀的程序员,十分优秀!