#include<stdio.h>
#define sw(x,y) {x=x^y;y=y^x;x=x^y;}
int main()
{int a=10,b=1;
sw(a,b);
printf("%d,%d\n",a,b);
return 0;}
为什么是1,10
^是按位异或运算 就是对每一位二进制字都异或
异或的规则就是不同=1,相同=0
a在内存中的映像是00000000,00001010
b是00000000,00000001
define宏定义之后
a=a^b=00000000,00001010^00000000,00000001=00000000,00001011
b=b^a=00000000,00000001^00000000,00001011=00000000,00001010
a=a^b=00000000,00001011^00000000,00001010=00000000,00000001
结果就出来了
当然应当设未知数进行严格证明
如图(弧线表示两次异或运算之后抵消了)
本回答被提问者和网友采纳#include<stdio.h> #define JH(x,y) x=x^y;y=x^y;x=x^y main() {int...
c语言中的异或,不用第三个数,就把x和y互换,
#define sw(x,y){x^=y;y^=x;x^=y;}main(){int a=10,b=1;sw(a,b);pr...
10对应的二进制数是1010,1对应的二进制数是0001,x^=y=>x=x^y=>x=11,即1011,y^=x=>y=y^x=10,x^=y=>x=x^y=>1.所以这个宏定义就是实现两个数的交换,因此最后输出为1,10
定义一个带参数的宏swap(x,y),以实现两个整数之间的交换,并利用它将一...
include<stdio.h> define swap(x,y) t=x;x=y;y=t void main(){ int a[10],b[10],i,t;printf("请输入a,b\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)scanf("%d",&b[i]);for(i=0;i<10;i++)swap(a[i],b[i]);for(i=0;i<10;i++...
#include"stdio.h" main() { int x=10,y=3; printf("%d\\n",y=x\/y...
xy都是整形,C\/C++表达式的值的类型和参与运算的值的类型保持一致,而浮点数据转换为整形数据使用的方法是直接抛弃小数部分,所以3.3的小数部分被舍弃了,于是结果就是3
#include<stdio.h> int main() { char x='a',y='A'; printf("%c\\n...
(x,y)括号里面是一个逗号表达式,而逗号表达式的特点就是最后一个参数有效。也就是说计算逗号表达式的时候会从第一个参数算起,算完第一个然后计算第二个,一直到最后一个参数,最后一个参数的值就是整个逗号表达式的值。
#include <stdio.h> main( ) { int x, y; for(x=30, y=0; x>=10...
第二次:执行前x=14,y=3,满足循环条件;运算结束x=7,y=5;循环结束x=6,y=6 第三次:执行前x=6,y=6,虽然x<10不满足条件,但是y满足循环条件,继续执行循环体内的运算;运算结束x=3,y=8;循环结束x=2,y=9 第四次:执行前x=2,y=9,继续执行;运算技术,x=1,y=11;循环结束x=0,...
#include <stdio.h> int main() { int x=10,y=9,a,b,c; a=(--x==y...
--x \/\/x变为9 --x==y \/\/表达式结果为真,即为1 y++ \/\/y变为10 问号之前结果为真,执行--x,x变为8,所以a=8 b等于x++执行之前的值,即b=8,然后x变为9 c等于y,即c=10
...#include <stdio.h> #include <math.h> main() {
首先定义了3个小数x,y,z 要求输入x,y的值 然后把x\/y的值赋给z 下面就是一个while循环 括号里的1表示一直循环 然后下面判断z的绝对值是否大于1 大于1的话就执行这步{x=y;y=z;z=x\/y;} 否则就跳出循环 最后输出y
#include <stdio.h> int main(void){ int a,x,y; a=10,x=5,y=6...
程序是顺序执行的 在上面 对a x y值改变了 就会影响下面 所以 不会回到最初值 而是继续的 比如 经过 x=y++; x=6了 下面的 y=++x; 就要用x=6运算 得到y=7
#include <stdio.h> main() { float x,y; scanf("%f",&x); if(x<=...
这是一个输入输出函数结合 先定义浮点型数 x、y 把输入的数赋值给x 然后对x的值进行判断 求出y的值 y=X (x<=1);y=2x-1 (1<x<=10)y=3x-11 (x>10)最后是个输出函数 输出共占7列,其中小数占2列