C 只打印整数的符号

C print only sign of integers

我想知道是否(以及如何)可以只打印数组条目的符号。例如我有类似

的东西
{1, -1, -1, 1}

我希望输出看起来像

+ - - +

我是 C 的新手,我能想到的唯一解决方案是某种 if (... < 0) 条件,它会导致 +- 字符。但这似乎很不方便。

这只是为了美化大 "patterns" 我正在用 +1-1 画画。如果有人能提供帮助,我将非常高兴。

看看 this.

标志+强制输出显示数字的符号

你走在正确的轨道上。这是我会使用的方法。虽然按位运算也可以,但为了可读性需要说些什么。

#include <stdio.h>

int main(int argc, char **argv)
{
    int numbers[4] = {1, -1, -1, -1};

    for (int i = 0; i < (sizeof(numbers) / sizeof(numbers[0])); i++)
    {
        printf("%s ", (numbers[i] < 0 ? "-" : "+"));
    }

    printf("\n");

    return 0;
}

或者您可以使用 sprintf() / snprintf() 构建一个字符串;不知道是要输出还是用在别处

你说的方法对这个很有效。如果你想通过其他方式做同样的事情,你可以使用三元运算符作为:

a[i] < 0 ? printf("-"): printf("+");

你可以这样做:

#include <stdio.h>

int main (void) {
    int num [4] = {1, -1, -1, 1);
    int i;
    for (i = 0; i < 4; i ++) {
        if (num [i] < 0) {
            printf ("-");
         }
         else
            printf ("+");
    }
    return 0;
}