printf中双重爆炸的功能是什么?

时间:2014-10-21 12:27:20

标签: c

我知道在C ++中使用!!(a.k.a.double bang)作为转换为bool的技巧(如this
但是我在米兰的Politecnico上冲浪,我发现了这段代码:

int main() {
    char *p, s[6] = "DBPAY";
    int a = 3;
    p = s;
    printf("%c", *(p++));
    f( &p, a );
    printf("%c !!", *p);
    return 0;
}

void f(char ** c, int x) {
    void *z = &z;
    if( strlen(*c) < 2 )
        return;
    printf( "%c", (**c)+x );
    (*c)++;
    f( c, --x );
    return;
} 

这是一个关于指针算术的简单程序,但我不知道是什么意思:

printf("%c !!", *p);

有人可以解释它的作用吗?

2 个答案:

答案 0 :(得分:2)

printf("%c !!", *p);

打印字符p指向,以及其他一些字符,在这种情况下为" !!"。它们无关紧要。

答案 1 :(得分:1)

printf("%c !!", *p);

类似于

printf("%c",*p);
printf(" !!");

%c是字符的格式说明符,您可以打印指针指向的字符。星号告诉取消引用指针。空格和感叹号是将要打印的其他字符。