首页 > 试题广场 >

以下程序的输出结果

[单选题]
以下程序的输出结果是?
#include <stdio.h>
main() {
    char a[10] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 0}, *p;
    int i;
    i = 8;
    p = a + i;
    printf("%s\n", p - 3);
}


  • 6
  • 6789
  • '6'
  • 789
1、p指向a[5]
2、“%s”输出直到'\0'的字符串
3、最后的0为数字而非字符‘0’,ASIIC码中0为空字符

所以输出的结果是   6789  而不是67890
发表于 2016-09-08 16:23:14 回复(4)
       C++中'\0'与'0'是不同的,他们都是字符,但是他们的ASCII码是不同的:'\0' ASCII码值为0,'0' 也可以写成'\0x30' ,ASCII码值为48。
最后一个0是数字0,即代表字符串结束标志‘\0‘。
发表于 2017-06-14 20:13:39 回复(3)
0就是‘\0’
发表于 2017-04-06 19:00:24 回复(0)
“%s”输出直到'\0'的字符串
发表于 2017-03-29 09:27:50 回复(0)
p指向a[5]的位置( p = a + 8 - 3), “%s”输出直到'\0'的字符串,所以输出的结果是"6789"
发表于 2016-08-24 18:39:48 回复(0)
%s格式对应的是字符串,%c对应的是单个字符,%d是十进制整数型输出,这些都是输出控制格式符。
发表于 2017-06-02 09:11:27 回复(0)

格式化输出%s,输出字符串;
格式化输出%c,输出字符
发表于 2019-08-03 19:59:16 回复(0)
“%s”输出直到'\0'的字符串
发表于 2016-09-15 20:59:46 回复(0)
%s输出一个字符串
发表于 2016-08-24 11:31:11 回复(0)
ASIIC码中0为空字符,且输出是字符串%s   。。。。。看成%c。。
发表于 2019-10-28 19:57:10 回复(0)
错把它当成是p所指向内容了
发表于 2016-08-22 10:36:05 回复(0)
格式化输出%s,输出字符串; 格式化输出%c,输出字符 ‘\0’的ASCII码值为0,‘0’的ASCII码值为48
发表于 2023-02-17 15:14:31 回复(0)
我知道指向6,最后那个是结束标志,但是还是为啥会全部输出剩下的?
发表于 2022-09-07 16:53:30 回复(0)
注意输出格式,%s,字符串,从当前指向到  \0 位置
发表于 2021-03-06 13:11:49 回复(0)
‘\0’的ASCII码值为0,‘0’的ASCII码值为48
发表于 2018-12-27 08:51:06 回复(0)
看花眼了看成%c了
发表于 2018-05-08 12:52:08 回复(0)
为什么会有89呢?
发表于 2018-03-20 11:42:47 回复(3)
计算指针位置,%s格式输出到'\0'位置
发表于 2017-03-04 20:37:11 回复(0)
注意那个s%
发表于 2016-08-22 14:51:04 回复(1)
printf()中以字符串形式输出内容
发表于 2016-08-19 22:12:43 回复(0)