【问题标题】:I saw some code in "return" that i don't understand. Can somebody help me?我在“返回”中看到了一些我不明白的代码。有人可以帮助我吗?
【发布时间】:2015-09-28 15:47:41
【问题描述】:

有没有关于这种功能的文档我可以阅读?

// return the capital of char c
char a(char c){
    return c >= 'a' && c<='z' ?
           c +'A' - 'a':c;
}

【问题讨论】:

  • 其称为三元运算符

标签: c return


【解决方案1】:

阅读三元运算符。 :) 然后很明显代码在做什么:

if (c >= 'a' && c<='z') {
   return(c +'A' - 'a');
} else {
    return c;
}

所以基本上它是在 ASCII 中大写拉丁字母。

【讨论】:

  • 拉丁字母大写很糟糕。不保证字母连续表示。请参阅 C 标准的第 5.2.1 节:open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
  • 代码将正确大写 'a'...'z' 范围内的 ASCII 字符
  • @user3629249 - en.wikipedia.org/wiki/EBCDIC 不要求字符集中的字母按顺序表示。依赖于这样一个细节的代码是bad代码。
  • Andrew:我更新了我的答案以澄清这只适用于 ASCII。
猜你喜欢
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多