【发布时间】:2016-04-19 06:21:05
【问题描述】:
所以我意识到假设 ascii 编码会给你带来麻烦,但我从来不确定你会遇到多少麻烦减去字符。我想知道哪些相对常见的情况会导致以下任何一项评估为假。
给定:
std::string test = "B";
char m = 'M';
A)(m-'A')==12
B)(test[0]-'D') == -2
另外,小写值的答案是否会改变(将77 更改为109 ofc)?
编辑:Digit subtraction 回答这个问题的字符数字,标准说 '2'-'0'==2 必须为所有数字 0-9 保留,但我想知道它是否适用于 a-z 和 A-Z,这标准的2.3 部分在我的阅读中不清楚。
编辑 2:删除了 ASCII 特定内容,以更清楚地集中问题(抱歉@πάντα-ῥεῖ 内容更改编辑,但我认为这是必要的)。本质上,该标准似乎暗示了基本集的某些字符顺序,但某些编码不保持这种顺序,那么最重要的原则是什么?
【问题讨论】:
-
否决票/关闭投票 想发表评论吗? stackoverflow.com/questions/36310181/char-subtraction-in-c 不是重复的恕我直言,因为它引用标准作为仅保留数字。
-
如果
char未签名怎么办? -
@DavidSchwartz 好点,但我的示例都已签名。
-
如果您在
char未签名的平台上执行(test[0]-'D'),您认为会发生什么? -
@DavidSchwartz 没有意识到 char 可以是无符号的,而无需声明为
unsigned char。在这种情况下,B) 可能有问题。很高兴知道! (对于像我这样的其他人:stackoverflow.com/questions/17097537/…)
标签: c++