我该如何申请<<字符指针IN C上的运算符和++运算符

时间:2011-10-18 11:18:39

标签: c bit-manipulation bitwise-operators bit-shift

我想在字符指针上应用<<移位运算符,并希望在某个位置增加此值。

例如:char *p;

*p中,我想对某个特定位置*(p+i) << 1++增量运算符应用左移位,如*(p+i)++

2 个答案:

答案 0 :(得分:2)

我不确定我明白你想做什么,但如果你想这样做:

*(p+i) = *(p+i) << 1;
*(p+i) = *(p+i) + 1; //++

您可以将其重写为:

*(p+i) <<= 1;
*(p+i) += 1;

答案 1 :(得分:1)

看起来你做的是穷人混淆(而不是加密)

for (char* it=strptr; *it; it++)
{
    *it <<= 1;
    (*it)++;
}

(假设strptr中以空字符结尾的字符串)

请注意,如果这是一种编码方案,如果使用char的高位(因此仅支持7位ascii),信息将丢失(不可逆),并且在解码时需要特别注意127输入值。

如果你坚持要做*it = 1 + (*it) << 1;。但是,您无法合法地将其与it++组合在一起,因为它会根据C ++ / C标准调用未定义的行为