2010-05-10 65 views
0

请解释一下下面这段代码..查询关于字符操作

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 

感谢名单。

+0

怎么样谷歌,维基百科,......之前你问这里? – 2010-05-10 07:21:07

+3

@Holger:请指定一个仅使用上述代码元素返回有用答案的Google查询。 – 2010-05-10 07:22:18

+0

@Aaron:http://www.cplusplus.com/reference/clibrary/cstdio/printf/是第一个使用关键字printf的谷歌搜索引擎 – 2010-05-10 07:50:36

回答

3

看看ASCII table。 '0'有代码48.所以'0'+ 1产生49,这是'1'。所以每个字符实际上是一个整数。你给它添加另一个整数,然后,因为你在printf中指定了“%c”,所以你强制它把它看作一个字符。他检查他的ASCII表格,经过一番考虑后,他决定将输出打印到屏幕上。

1

'0'给出ASCII char 0的值,即48。要添加0以获得48。然后,您打印48追溯到这给0

同样下一个加14849,当打印为焦炭提供了1

1

感谢%c个个打印字符等效参数的字符。

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

添加零到作为48的字符零的ASCII值: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 
+0

谢谢..这一个也是正确的:-) – AGeek 2010-05-10 07:53:47

+0

@RBA就像一个供参考,通常情况下,通过向答案左侧按下向上箭头,通过对答案进行提前投票来感谢他人。这会给他/她10个声望点。 (我已经做了这个答案CW,以便我不会在这个答案上获得任何代表;不想声讨乞求代表 - 只是想让你知道这个习俗) – Amarghosh 2010-05-10 11:11:45