日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言中临时变量写在哪里,C语言中不允许创建临时变量,交换两个数的内容

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言中临时变量写在哪里,C语言中不允许创建临时变量,交换两个数的内容 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在C語言中可以通過建立臨時變量來實現兩個變量的交換,當不允許建立臨時變量時,應該怎樣實現兩變量的交換呢?

假設有兩個變量num1和num2;下面通過兩種方法進行分析。

方法一:利用加減法。具體算法分析如下:

由于 ? ? ? ? ? ? ? ? ??num1+num2-num1=num2;

num1+num2-num2=num1;

則將num1+num2賦給num1;num1-num2賦給num2;num1-num2賦給num1,這樣就可以實現num1和num2兩個數內容的交換。通過相同的思想,我們也可以將加減運算改為乘除運算,但此法存在缺陷。對于不能整除的兩個數,設定的精度不同結果的誤差就不同。

代碼如下:#include

int?main()

{

int?num1=10,num2=20;

num1=num1+num2;

num2=num1-num2;

num1=num1-num2;

/*相同方法:將“+”“-”換成“*”“/”*/

printf("%d?%d",num1,num2);

return?0;

}

方法二:利用按位異或法。C語言中異或運算符“^”也稱為“XOR”運算符,對于二進制數據它的運算規則是:0^0=0;0^1=1;1^0=1;1^1=1;若參加運算的兩個數同號,則結果為0(假);異號時結果為1(真)。

具體算法分析如下:num1^num2^num1=num2;

num1^num2^num2=num1;

則將num1^num2賦給num1;num1^num2賦給num2;num1^num2賦給num1,這樣就可以實現num1和num2兩個數內容的交換。

例如:兩個變量a=2和b=3.

a=2 ? ? ? ? ? ? ? ? ? ?00000000 00000000 00000000 00000010

b=3 ? ? ? ? ? ? ? ? ? ?00000000 00000000 00000000 00000011

a=a^b=2^3 ? ? ? ?00000000 00000000 00000000 00000001

b=a^b=2^3^3 ? ?00000000 00000000 00000000 00000010

a=a^b=2^3^2 ? ?00000000 00000000 00000000 00000011

此時兩個數a,b的內容交換了。

代碼如下:#include

int?main()

{

int?num1=35,num2=56;

num1=num1^num2;

num2=num1^num2;

num1=num1^num2;

/*異或,此法優于用加減法或乘除法*/

printf("num1=%d,num2=%d",num1,num2);

return?0;

}

小知識:如何動態求取數組大小?

例如:對于數組不知道其大小,可通過sizeof求其長度。sizeof運算符可以動態計算類型大小,

對于數組a[],它的數組大小可用sizeof(a)/sizeof(a[0]),求取對于整型數組sizeof(a[0])=4。

總結

以上是生活随笔為你收集整理的C语言中临时变量写在哪里,C语言中不允许创建临时变量,交换两个数的内容的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。