在c中显示字符的ASCII值

Khu*_*boo 6 c ascii

我接受了一个角色作为用户的输入.我想打印该字符的ASCII值作为输出.如果不使用任何预定义的函数(如果存在),我怎么能这样做呢?

Mar*_*off 9

而不是printf("%c", my_char),用于%d打印数字(ASCII)值.

  • @Karl:有传言说每个拥有超过10k的得分的人都被绑架并被AI取代.除了Jon Skeet,他一直都是AI. (10认同)
  • @ user417316:我认为你是从一行的末尾读取换行符...... (2认同)

Mat*_*ner 8

还要考虑printf("%hhu", c);精确指定转换为unsigned char并打印其十进制值.

Update0

所以我实际上在我的C编译器上测试了这个,看看发生了什么,结果很有趣:

char c = '\xff';
printf("%c\n", c);
printf("%u\n", c);
printf("%d\n", c);
printf("%hhu\n", c);
Run Code Online (Sandbox Code Playgroud)

这是印刷的:

? (printed as ASCII)
4294967295 (sign extended to unsigned int)
-1 (sign extended to int)
255 (handled correctly)
Run Code Online (Sandbox Code Playgroud)

感谢caf,指出这些类型可能会以意想不到的方式进行推广(这显然是针对%d%u案例).此外,看起来%hhu情况是回到a char unsigned,可能会修剪符号扩展.

  • 这是一个技术性,但是`%u`说明符(即使与`hh`一起使用)需要一个(提升的)`unsigned int`参数,否则行为显然是未定义的.`char`可以被提升为`int`而不是`unsigned int`(因为它可能会或可能不会被签名),因此需要显式转换为`unsigned char`以确保它被提升为`unsigned int`. (2认同)