在C中向数字添加1

pun*_*eet -5 c bitwise-operators integer-arithmetic

我必须在C中添加一个数字.我必须在没有像'+','++'等算术运算符的情况下这样做.

我写了以下代码行.

int a = 1234;
int b = 1;
printf("%d", a ^ b);
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到达到整数限制,即,对于32位,它是4294967295.但我在许多其他网站中看到,执行相同的两个数字的AND,然后是XOR和左移.

请告知我的方法是否正确,因为我是C的新手.

Mag*_*off 5

你的方法不正确.你应该用+C在C中添加数字:

int a = 1234;
int b = 1;
printf("%d\n", a + b); // Prints 1235
Run Code Online (Sandbox Code Playgroud)

关于你的方法,你说"这个工作正常,直到达到整数限制",但你错了.当a为奇数时,^操作的结果是减1:

int a = 1235;
int b = 1;
printf("%d\n", a ^ b); // Prints 1234
printf("%d\n", a + b); // Prints 1236, using the correct operator
Run Code Online (Sandbox Code Playgroud)

在这里,您可以看到您当前使用的方法对于奇数不正确.