无法在这里得到逻辑

时间:2014-07-31 10:56:58

标签: c

输出结果如何 五 0 我无法理解3 ^ 6 = 5的逻辑,实际上它应该是729对吗? 这是代码

#include <stdio.h>

int main()
{
 int a;
 printf("%d\n",(3^6));
 printf("%d",(a^a));
 return 0;
}

4 个答案:

答案 0 :(得分:7)

^运算符是按位xor。要了解3^65的原因,请查看这些值的二进制表示:

3 = 0011
6 = 0110

等等

3^6 = 0101 = 5

您没有初始化a,这意味着a^aundefined behaviour


对于取幂,您需要使用pow()

答案 1 :(得分:4)

C中的^运算符不是指数:它是按位xor

00000011 (3)
xor
00000110 (6)
=
00000101 (5)

pow()用于指数。

你没有初始化a,所以要小心。

答案 2 :(得分:1)

C中的运算符^不是幂 - C没有内置运算符,只有pow函数:

double x = pow(3,5);

运算符^是按位异或。

答案 3 :(得分:0)

^ 

是用于XORing的运算符。包括#include<math.h>头文件和use pow(3,6)来评估权力,你会得到729