C语言,以下程序的运行结果是?

以下程序的运行结果是?
#include "stdio.h"
#define sw(x,y) {x^=y;y^=x;x^=y;}
main()
{
int a=10,b=01;
sw(a,b);
printf("%d,%d\n",a,b);
}

答案是1,10
为什么我算出来和答案正好相反?
那个b=01是否代表8进制数的1?能否写下计算过程?谢谢~

第1个回答  2008-04-29
#define sw(x,y) {x^=y;y^=x;x^=y;}

这个宏的作用就是在不借助第三变量的情况下,交换x和y的值,^是位异或运算符,x^=y相当于x=x^y,具体什么是位异或运算,可以在网上轻意找到相关教材。

b=01代表8进制数的1,1在任何进制计数系统中都相等。
第2个回答  2008-04-29
(x=10,y=1;)
x^=y;->x=00001010^00000001=00001011
y^=x;->y=00000001^00001011=00001010
x^=y;->x=00001011^00001010=00000001
(x=1,y=10)本回答被提问者采纳
第3个回答  2008-04-29
#define sw(x,y) {x^=y;y^=x;x^=y;} ??????/////

C语言,以下程序的运行结果是?
define sw(x,y) {x^=y;y^=x;x^=y;} 这个宏的作用就是在不借助第三变量的情况下,交换x和y的值,^是位异或运算符,x^=y相当于x=x^y,具体什么是位异或运算,可以在网上轻意找到相关教材。b=01代表8进制数的1,1在任何进制计数系统中都相等。

C语言,以下程序运行的结果是什么,麻烦详细解释一下
int main(){ union b { int k;char c[2];}a;a.k=-7;printf("%d,%d\\n",a.c[0],a.c[1]);return 0;} 解释 :联合体共用存储空间。int型占4个字节,char型占一个字节,因此a的内存分布如下图 整型数-7的十六进制表示为0xfffffff9 char[0] = 0xf9 \/\/转为十进制-7 char[1]...

下面程序段的运行结果是( )。 char *p="abcdefgh"; p+=3; printf("%d...
将ABCD赋值个p,他们之间是怎么赋值的呢,让p指针指向“A”的地址,如果取值的话就*P拿到A了。这个函数返回的值是目标串的地址,也就是p啦,那么p是个指针怎么算地址的长度呢,其实就是strlen("ABCD")啦,为什么,计算机知道的啦,因为p指向了“ABCD”首地址了,而c语言中默认在ABCD后加个结束符的...

C语言问题:下面程序的运行结果是
看看程序逐步运行跟踪结果:i=1;[i=1] i<5成立,开始循环: i%2为真, printf输出[*], printf累计输出[*#]i++;[i=2] i<5成立,继续循环: i%2为假, continue;i++;[i=3] i<5成立,继续循环: i%2为真, 累计输出[*#*], 累计输出[*#*#]i++;[i=4] i<5成立,继续循环: i%2为...

C语言,以下程序运行后的输出结果为__
开始时,len为0,offset=3,offset不为0,先输出p+offset-1上的元素,即*(p+2),为g,并len++,再调用print(str)。之后,每次递归,len静态变量保存了上一次的值。实际上,len每加一,offset就随之向左偏移一位,指向前面的一个字符,也就是倒过来输出字符串中的每个字符。直到len=strlen(str)...

c语言,以下程序运行后的输出结果是
a+=a-=5)是一个表达式,(a=b,b+3)是另一个表达式。a=0,a=a-5=-5,a=a+a=(-5)+(-5)=-10,将值赋给c,c=-10,此时,a=-5 a=b,将b的值赋给a,a=0,执行b+3=0+3=3,这个3不对任何变量赋值。因此最终结果a=0,b=0,c=-10 输出a、b、c的值,输出0,0,-10 ...

以下程序运行后,输出结果是( ) main() { char *s="abcde"; s+=2...
选择答案C,输出的为字符c的地址。因为%d是打印整形变量的值,因为前一句执行了s+=2,s指针偏移了两个位置,偏移了两个位置之后s指向的是字符c,所以输出语句输出的是指针s,而s存放的是地址,所以输出的就是字符c所在的地址。

C语言题目 分少是少,诚心请教,麻烦告诉下,看看自己选的是对的吗?望请...
1、c语言规定:在一个源程序中,main函数的位置 c A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后 2、下面程序的运行结果是___d_。main(){struct cmplx {int x;int y;}cnum[2]={1,3,2,7};printf(”%d\n”,cnum[0].y\/cnum[0].x *cnum[l].x)...

C语言,阅读下列程序,则在执行后,程序的运行结果为 ?
a是字符串"nice to meet you!"的首地址,strlen(a)是计算字符串a的长度结果为17。那么a+strlen(a)\/2就是a + 17 \/ 2就是a + 8,意思是从a后面第8个位置开始接受拷贝。strcpy(a+8,"you"); 就相当于把 "you" 接到a后面第8个位置 结果就是nice to you。答案D ...

C语言,写出下列程序运行结果及解释。
x=12,y=8;printf("\\n%5d%5d%5d", !x, x|| y, x && y);\/\/(!x,x||y,x&&y) 相当于(!12,12||8,12&&8)\/\/ !x:当x=0,!x就等于 1 就是对x 取非 \/\/ ||:两边只要有一个为真,结果就为真 \/\/ &&:两边都为真,结果才为真,否则为0 } 输出结果: 0 1 1 ...

相似回答