首页 > 试题广场 >

下面程序执行的结果为( &n...

[单选题]
下面程序执行的结果为(      )
void main( )
{
char ch1,ch2;

ch1 ='D'+'8'-'3';
ch2 ='9'-'1';

printf("%c %d\n",ch1,ch2);
}
  • I '8'
  • I 8
  • G '8'
  • 其他几项都不对

如果是Java语言,亲测答案选B
字符类型进行算数运算,运算的是ASCCL码
'D'->68;'8'->56;'3'->51,所以ch1->73,'I'的ASCCL码为73所以输出ch1为‘I’;同理ch2的ASCCL码为8,强转为int类型输出为8
代码如下A

public class Test {
    public static void main(String[] args) {
        char ch1;
        char ch2;
        ch1 = 'D' + '8' - '3';
        ch2 = '9' - '1';
        System.out.println(ch1); // 输出I
        System.out.println((int) ch2); // 输出8
    }

}
编辑于 2019-08-25 10:09:17 回复(2)
c语言的题目,ASCII值的运算,A=65,0=48(以此类推)。ch1=68+56-51=73然后以char类型输出所以是I,ch2=57-49=8以整型输出所以是8
发表于 2019-08-20 17:26:10 回复(0)
一看这种语句默认是按C语言做的,虽然我选的是java
编辑于 2019-10-18 11:33:53 回复(0)
这道题是有问题的,输出有问题,格式首先不对,其次ch2是char,两个char类型相加会自动向int类型转换,这个赋值运算时错的,正确答案应该是D
发表于 2019-08-23 22:26:26 回复(2)
这是不是因为都是字面常量,在char的范围内,所以直接计算就可以了,不存在提升为int类型。
发表于 2019-09-08 11:12:12 回复(0)

答案是对的,第一行的结果是D的字符码加上8字符减去3字符,就是D加5变成了I,那么9字符减速1字符应该是等于8对应的字符,8对应的字符强转int就是8

发表于 2019-08-24 23:04:47 回复(0)
发表于 2019-08-22 10:12:58 回复(0)