我想在字符指针上应用<<
移位运算符,并希望在某个位置增加此值。
例如:char *p;
在*p
中,我想对某个特定位置*(p+i) << 1
和++
增量运算符应用左移位,如*(p+i)++
答案 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标准调用未定义的行为