【问题标题】:Query Regarding Character Operations字符操作查询
【发布时间】:2010-05-10 07:15:24
【问题描述】:

请解释下面这段代码..

   printf("%c\n",0+'0'); --> returns 0
   printf("%c\n",1+'0'); --> returns 1
   printf("%c\n",0+'1'); --> returns 1
   printf("%c\n",1+'1'); --> returns 2

谢谢。

【问题讨论】:

  • 在你在这里提问之前,谷歌、维基百科……怎么样?
  • @Holger:请指定一个 google 查询,该查询将仅使用上述代码的元素返回有用的答案。
  • @Aaron: cplusplus.com/reference/clibrary/cstdio/printf 是第一个使用关键字 printf 的谷歌搜索

标签: c character


【解决方案1】:

查看ASCII table。 '0' 的代码是 48。所以 '0' + 1 产生 49,即 '1'。所以每个字符实际上都是一个整数。你向它添加另一个整数,然后,因为你在 printf 中指定了“%c”,你强迫它把它当作一个字符。他去检查他的 ASCII 表,经过深思熟虑后,他决定将输出打印到屏幕上。

【讨论】:

    【解决方案2】:

    '0' 给出 char 0ASCII 值,即 48。为此,您添加0 以获得48。然后你将48 打印回来作为一个字符,给出0

    类似地,下一个将1 添加到48 以给出49,当打印为char 时给出1

    【讨论】:

      【解决方案3】:

      感谢%c,他们都打印了参数的等效字符。

      printf("%c\n",0+'0');
      

      将零添加到字符零的 ASCII 值,即 48:48 + 0 = 48。
      尝试printf("%d\n", '0'); 获取 ASCII 值。

      printf("%c\n",1+'0'); // 1 + 48 = 49 which is the character `1`
      printf("%c\n",0+'1'); // 0 + 49 which is again `1`
      printf("%c\n",1+'1'); //left as an exercise
      

      【讨论】:

      • @RBA 就像仅供参考一样,通常在 SO 中,您通过向上投票来感谢一个人的答案 - 通过按答案左侧的向上箭头。这会给他/她 10 点声望点。 (我已经做出了这个答案 CW,这样我就不会在这个答案上获得任何代表;不想听起来乞求代表 - 只是想让你知道这个习惯)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 2018-02-12
      • 2014-10-01
      相关资源
      最近更新 更多