首页 > 解决方案 > 获取整数的负号并将其存储为 char 的最佳方法是什么?

问题描述

如何获取整数的符号并将其存储在字符中?一种方法是:

int n = -5
char c;
if(n<0)
    c = '-';
else
    c = '+';

或者:

char c = n < 0 ? '-' : '+';

但是有没有办法在没有条件的情况下做到这一点?

标签: ccharintnegative-number

解决方案


这将在 x86-64 上使用 gcc/clang 创建无分支代码:

void storeneg(int X, char *C)
{
    *C='+';
    *C += (X<0)*('-'-'+');
}

https://gcc.godbolt.org/z/yua1go


推荐阅读