English 中文(简体)
需要解释该方案的产出。 页: 1
原标题:Need an explanation for the output of the program.in
  • 时间:2012-04-09 17:58:31
  •  标签:
  • c

While looking at some conceptual questions in C,I came across this question in a book. What is the output of the following program ?

#include<stdio.h>
#include<string.h>
int main()
{
    static char s[25]="The cocaine man";
    int i=0;
    char ch;
    ch=s[++i];
    printf("%c",ch);
    ch=s[i++];
    printf("%c",ch);
    ch=i++[s];
    printf("%c",ch);
    ch= ++i[s];
    printf("%c
",ch);
    return 0;
}

答复:

 hhe!

谁能解释这一产出如何?

最佳回答

从第一次转让开始

ch=s[++i];

编号I(i=1)和编号ch

ch=[i++];

分配<代码>ch ,以<代码>(i=1)为特征,然后加插(i=2)。

<>代码>ch=i++[s];

分配<代码>ch , 特性为<代码>(i=2)>,然后加插(i=3)。 关键:[i] == i[s]

ch> ++i[s];

将ASCII数值按()的指数(i=3)重新计算,并将其分配到ch。 关键:[ ] 高于序号<>++>>

问题回答

了解这一点的关键是,在C,以下各点是:

x[y]
*(x+y)

and also that prefix ++ has lower precedence than [].

A table of the ASCII character set will also come in handy.

  • first of all i=0, now for s[++i], i=1 and s[1] will give h.

  • 现在请上<代码>[i++],并注明<编码> > ***,即<代码>h,i为2。

  • <代码>i++[s],我们必须知道,i[s]=s[i]。 现在,它将提供<条码>第2条,即<条码>e>和i=3值。

  • Now for the most important part ++i[s], we can think of it as ++(i[s]) because [ ] operator has greater precedence than ++. Since i[s] is a char value, ++ operator will work on its ASCII value that is ASCII value of s[3] i.e (Space) which is 32 http://www.asciitable.com/ . 32 is incremented by 1 and becomes 33 which is ASCII value of !.





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签