當前位置:首頁 » 編程語言 » c語言賦值互換

c語言賦值互換

發布時間: 2022-09-06 12:23:01

⑴ 將c語言中的char語句和賦值語句交換位置後會怎麼樣

C語言必須先定義變數再使用變數(比如賦值、取值等)


char A;
A='A';
如果違反這個規定的話,編譯器將會報錯導致編譯無法繼續進行。

⑵ c語言 將變數A和B的值進行互換 的程序

代碼如下:#include<stdio.h>


#include <stdlib.h>

void swap1(int& a,int& b)//使用中間變數交換兩個值


{


int temp = a;


a = b;


b = temp;


}

void swap2(int& a, int& b) //只用加法、減法、乘法也可以交換兩個值


{


a = a + b;


b = a - b;


a = a - b;


}

void swap3(int& a, int& b) //使用位運算也可以交換兩個值


{


a = a^b;


b = a^b;


a = a^b;


}

void main1mianshiti7()


{


int a1 = 1, b1 = 2;


int a2 = 10, b2 = 15;


int a3 = 78, b3 = 90;


int a = 2147483647, b = 1;


printf("a1=%p,b1=%p", &a1, &b1);


swap1(a1, b1);


swap2(a2, b2);


swap3(a3, b3);


printf("swap after~~~~~~~~~~~~~ ");


printf("a1=%d,b1=%d ", a1, b1);


printf("a2=%d,b2=%d ", a2, b2);


printf("a3=%d,b3=%d ", a3, b3);


swap2(a, b);


printf("a=%d,b=%d ", a, b);


system("pause");


}

源代碼截圖:

C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。[1]目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。

C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。

其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

⑶ C語言中為什麼可以不增加新變數將兩個變數的值互換

C語言中為什麼可以不增加新變數將兩個變數的值互換。
純粹的數學轉換而已,沒有任何值得稱道的地方。實際編程中沒有人會這樣做。
這里考察的只是你對於基礎數學邏輯的掌握。與程序而言,並無益處,只是提高了程序的邏輯復雜度。

⑷ c語言中三個整型數a b c怎麼進行值的互換

二個變數值的交換一般需藉助於一個輔助變數來完成的。
int
a=3,b=4,t;
通過以下的三個語句就能把a,b的值互換(這種操作有點像把二個瓶里的液體交換時,要藉助於一個空瓶):
t=a;
a=b;
b=t;
不太清楚什麼是「a
b
c值的互換」。如果是要把a=1,b=2,c=3「輪換」為a=2,b=3,c=1的話,
那就用下面的語句實現:
t=a;
a=b;
b=c;
c=t;
如果是要把任意大小順序的三個變數,通過交換變為從小到大排列,可以採用以下的程序段:
int
a,b,c,t;
scanf("%d
%d
%d",&a,&b,&c);
if(a>b){t=a;
a=b;
b=t;}
if(a>c){t=a;
a=c;
c=t;}
if(b>c){t=b;
b=c;
c=t;}
printf("從小到大的排列是:%d
%d
%d\n",a,b,c);

⑸ C語言之 兩個值的互換

這跟等不等沒有關系
c語言中
=
的意思是把右邊的書的值給左邊的數
執行c=a;a=b;b=c
就是把a
的值給c
c的值就沒有了
變成a
的值了,
其餘的也是這樣,
就像兩杯水
要讓他們換過來,
就要把其中的一杯倒到另一隻空杯子里
把另一杯倒到剛空出來的杯子里
然後再把第三隻杯子里的水倒到第一隻杯子里的道理是一樣的

⑹ c語言如何 把結構體內的變數的值互換

同類型結構體間可以直接賦值
struct phoneinfor s1,s2,temp;
temp=s1;
s1=s2;
s2=temp;
你這個不行:
if(strcmp(phonebook[j].name,phonebook[j+1].name)>0)
{
phonebook3=phonebook[j];
//phonebook3是phoneinfor3類型的,你得把它定義為phoneinfor類型的
phoneinforphonebook[j]=phonebook[j+1];
phonebook[j+1]=phonebook3;
}

⑺ c語言結構體成員之間的值怎麼對換

structzombiet;
t=z[j];
z[j]=z[j+1];
z[j+1]=t;

這樣可以整體賦值。

⑻ c語言怎麼實現兩個數據交換

將兩個數進行互換的方法有兩種形式:
1、藉助中間變數完成,此方法直觀,易理解,使用最多
2、不需要中間變數,通過變數身的運算完成交換。

⑼ 在C語言中的各種賦值是如何轉換的

關於賦值操作,你可以查看一下博客的內容,初學者不用理解底層匯編的實現機制,有點晦澀,隨著自己的進步可以進一步的深入底層查看其實現原理

1 代碼案例
iint main()
{

int n,m;
char ch;
float f = 12.12;
double d=121.111;
n = f; //單精度浮點賦值給整數
m =d; //雙精度浮點賦值給整數
ch = n; //整數賦值給字元值
ch = f; //浮點賦值給字元值
f = d; //整數變數賦值給浮點變數;
return 0;
}
2 以上代碼調試運行對應的匯編代碼分析
101: float f = 12.12; //單精度浮點賦值:佔用4個位元組,需要1條匯編指令實現
源代碼對應1條匯編指令:
00401C78 mov dword ptr [ebp-10h],4141EB85h

102: double d=121.111; //雙精度浮點賦值:佔用8個位元組,需要2條匯編指令實現
源代碼對應2條匯編指令:
00401C7F mov dword ptr [ebp-18h],9FBE76C9h
00401C86 mov dword ptr [ebp-14h],405E471Ah

103: n = f; //單精度浮點賦值給整數
源代碼對應3條匯編指令:
00401C8D fld dword ptr [ebp-10h]
00401C90 call __ftol (004232cc)
00401C95 mov dword ptr [ebp-4],eax

104: m =d; //雙精度浮點賦值給整數
源代碼對應3條匯編指令:實際的類型轉換通過調用內部C運行時介面函數__ftol來實現類型轉換。
00401C98 fld qword ptr [ebp-18h]
00401C9B call __ftol (004232cc) //調用__ftol函數(對應15條匯編指令,見下面3描述)
00401CA0 mov dword ptr [ebp-8],eax

105: ch = n; //整數賦值給字元值
源代碼對應2條匯編指令:
00401CA3 mov al,byte ptr [ebp-4]
00401CA6 mov byte ptr [ebp-0Ch],al

106: ch = f; //浮點賦值給字元值
源代碼對應3條匯編指令:
00401CA9 fld dword ptr [ebp-10h]
00401CAC call __ftol (004232cc)
00401CB1 mov byte ptr [ebp-0Ch],al

107: f = d; // 整數轉換為浮點數,源代碼對應2條匯編指令:
00401CB4 fld qword ptr [ebp-18h]
00401CB7 fstp dword ptr [ebp-10h]

3 賦值涉及的__ftol函數對應的匯編指令:
__ftol 函數對應以下16條指令:
004232CC push ebp
004232CD mov ebp,esp
004232CF add esp,0F4h
004232D2 wait
004232D3 fnstcw word ptr [ebp-2]
004232D6 wait
004232D7 mov ax,word ptr [ebp-2]
004232DB or ah,0Ch
004232DE mov word ptr [ebp-4],ax
004232E2 fldcw word ptr [ebp-4]
004232E5 fistp qword ptr [ebp-0Ch]
004232E8 fldcw word ptr [ebp-2]
004232EB mov eax,dword ptr [ebp-0Ch]
004232EE mov edx,dword ptr [ebp-8]
004232F1 leave
004232F2 ret

4 C運行庫(Run-Time Library)存在的原因
4.1 定義(摘自《軟體調試》,張銀奎)
當編譯器在將高級語言編譯到第幾語言的過程是,因為高級語言中的某些比較負責的運算符(如不同的類型轉換)要對應比較多的低級語言指令(如匯編、機器指 令),為了防止這樣的指令段多次重復出現在目標代碼中(造成目標碼過大),編譯器通常將這些指令段封裝為函數,然後將高級語言的某些操作翻譯為函數調用。
C標準定義了標准C函數,C++標準定義了C++標准類庫,這些庫通常被稱為支持庫,這些庫是程序編譯運行的必要條件,因此支持庫也稱為運行庫(Run-Time Library).
VC提供了C和C++運行庫。
4.2 例子
1)如上面例子,VC編譯器通常將 n =f( n :整數,f:浮點數)這樣的賦值編譯為調用__ftol函數;
2)VC編譯器也將new ,delete 操作符編譯為對malloc和free函數調用(可以通過單步調試運行,反匯編單步跟著call 指令觀察分析驗證!)

5 總結
1)通過以上分析,不同類型變數轉換,是編譯程序在編譯程序過程中,將操作轉換編譯成調用運行庫函數來實現的。
2)一般程序設計過程中,不是必要情況下,不要頻繁使用不同類型互相轉換的操作,特別是涉及到循環運算、性能的優化的程序!

⑽ C語言中如何交換兩個指針變數的的值

1、首先,就是最基本的知識,寫頭文件、函數聲明、定義變數。

熱點內容
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:170
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:100
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:208
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554
雲伺服器的優點與缺點 發布:2024-09-08 06:30:34 瀏覽:734