来自GATE论文的c程序

时间:2011-02-14 06:27:35

标签: c pointers

嘿所有昨天我都参加了GATE考试,在这次考试中有一个问题:

C程序的以下片段打印了什么?

char c [] = "GATE2011";
char *p =c;
printf ( "%s", p+p [3] − p [1]) ;

选项:

(A) GATE2011
(B) E2011
(C) 2011
(D) 011

答案是'C'。当我在我的电脑上尝试代码但是如何?

提前致谢

2 个答案:

答案 0 :(得分:5)

那是指针算术:

char c [] = "GATE2011";
// indices:  01234567
char *p =c;

p[1]A个字符代码,p[3]E字符代码,它们的差异(E代码减去A代码)是4 ,然后将该差异添加到p指针,并且您已将2011子字符串的地址传递到printf()

答案 1 :(得分:0)

这里p [3] = E p [1] = A的ascii - > 65和E - > 69 69-65 = 4 p + 4将指向字符串GATE2011的第四个索引01234567

... SO 2011 char[c]="GATE2011"