首页 > 试题广场 >

数字字符0的ASCII值为48,若有以下程序main(){c

[单选题]
数字字符0的ASCII值为48,若有以下程序
int main() {
    char x='1',y='3';
    printf("%c,",y++);
    printf("%d\n",y-x);
}
程序运行后的输出结果是()
  • 4,3
  • 51,3
  • 3,3
  • 3,2
char x='1',y='3';    //int:x=49,y=51
printf("%c,",y++);    //y++先输出后++,因此输出3,y=52
printf("%d\n",y-x);    //y=52,x=49,y-x=3
发表于 2019-09-25 20:42:06 回复(1)
坑有3:
1.以char的形式定义了2个数字,会使初学者迷茫’。但是它上面有提示ASCII码值。以后看见char定义数字直接往ASCII上靠,并记住0=48(ASCII);
2.在输出行居然也有大坑y++与++y。牢记谁在前先打印谁
3.第三行以%d格式输出则y-x应为他们的ASCII相减输出的也是相减后的值,且注意,此时的y已改变值。
最后对于答案分布只能说呵呵
发表于 2022-02-27 10:32:49 回复(0)
B中51为ascll值不是对的?
发表于 2022-02-28 10:34:25 回复(1)
第一个 %c输出的是字符,y++  是前++ 先使用后 ++ 。 输出 为 字符 ‘3’
第二个 %d 输出的是 ASCll码,y此时ASCII码 为 字符‘4’ ===‘0’+4 === 48+4
                                                  x此时的ASCII码   字符 ‘1’ === ‘0’ +1 === 48+1  
                                                  y-x即为3.
错误原因,忘记y++ 增加的值。 下次做这类题,记得i++ 后还有自+
发表于 2023-08-15 21:18:46 回复(1)
犯病了?单选写个不定项选择?
发表于 2021-10-27 17:45:19 回复(0)
看了半天选项,结果答案是单选,我焯
发表于 2021-12-18 16:07:03 回复(0)
y++,为后置++;在printf中,先传递y给printf,然后再自增,自增后y增加1
发表于 2023-11-20 21:35:57 回复(0)
ascii的3++是4。
发表于 2022-01-04 20:54:26 回复(0)
x是49,y是51
y++后编程52,y-x是3.
发表于 2021-12-11 20:04:20 回复(0)
没注意自增运算符的位置问题,y++,是代表先赋值,后自增
发表于 2021-03-23 07:51:54 回复(0)