如圖,c語言資料的自動轉換,這兩步看不懂,求解釋,謝謝

時間 2021-08-11 17:49:52

1樓:趙德柱

c語言資料型別轉換分自動轉換和強制轉換兩類。

自動轉換

自動轉換髮生在不同資料型別的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:

1.若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。

2.轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。

3.所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表示式,也要先轉換成double型,再作運算。

4.char型和short型參與運算時,必須先轉換成int型。

5.在賦值運算中,賦值號兩邊量的資料型別不同時, 賦值號右邊量的型別將轉換為左邊量的型別。 如果右邊量的資料型別長度左邊長時,將丟失一部分資料,這樣會降低精度, 丟失的部分按四捨五入向前舍入。

強制型別轉換

強制型別轉換是通過型別轉換運算來實現的。其一般形式為: (型別說明符) (表示式) 其功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。

例如: (float) a 把a轉換為實型(int)(x+y) 把x+y的結果轉換為整型在使用。

強制轉換時應注意以下問題:

1.型別說明符和表示式都必須加括號(單個變數可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。

2.無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行的臨時性轉換,而不改變資料說明時對該變數定義的型別。

希望能夠幫助到你,望採納!

2樓:匿名使用者

解釋很清楚,**看不明白?

c語言程式 8轉10 我看不懂,幫忙解釋下謝謝

3樓:c學者

這個程式是不是有錯誤啊。。

main()

printf("%d",n);

}不知道演算法對錯,但是程式一定些錯了

4樓:匿名使用者

main()

printf("%d",n);

}暈,樓下這位不知執行過沒有就說有錯

5樓:匿名使用者

你再看看程式啊有問題啊

c語言看不懂**,求一步步解釋,謝謝

6樓:

答案正確啊。*(a+1)就是a[1],*(ptr-1)就是ptr[-1](用負數表示下標是非法的,這裡只表示從ptr所指的地方向左移一個元素的位置)。那麼——

void main( void )

;//使a[0]==1,a[1]==2 ,a[2]==3 ,a[3]==4 ,a[4]==5

int *ptr=(int *)(&a+1);//宣告指標ptr並用(int *)(&a+1)初始化到指向陣列a的元素5的後面一個元素,由於&a是(*)[5]型,所以要用(int *)強制為int *以便與prt型別匹配

printf("%d,%d",a[1],*(ptr-1)); //return;}

c語言題目。這道題看不懂。。求大神詳細解釋下,謝謝

7樓:匿名使用者

答案選b。

定義結構體陣列c

未執行f(c)時,c[0]為 qian,f,95,92 c[1]為 sun,m,98,99

執行f(c)時,將c作引數傳遞

執行f(c)後將c[1]的值改變為 zhao,m,85,90f()函式作用就是對c[1]重新賦值

請教這個c語言程式,最後的遞迴法我沒看懂,求大神幫忙解釋下,謝謝!

8樓:匿名使用者

n = 1或2明白吧

f=count(n-1)+count(n-2):第n階時,因為一次只能上1或2階所以只可能從n-1或n-2階上來,上來的方法也就是這兩種方法的和了啊啊啊

9樓:ben笨_小劍

這是一種類似斐波那契數列的思想。

我有n個臺階,就是f(n)個走法

那我先走n-1個臺階,再走一步,就是f(n-1);

那我先走n-2個臺階,再走2步,就是f(n-2);

10樓:西瓜蘋果胡桃

這咋解釋呢。。。。首先得從數學或邏輯角度理解,然後轉換成**。

數學或邏輯角度上來看,n層的樓梯的爬法=n-1層的樓梯的爬法+n-2層的樓梯的爬法,這個能理解嗎?

一道c語言程式填充題,問題如下,我看不懂為什麼這麼填,請詳細解釋一下,謝謝!

11樓:寂靜深闌斜

說下這段**思路。a、b兩個陣列,總有一個陣列元素最先被使用完,那麼之後存入c陣列的元素只能是另一個陣列的。i和j作為角標,就是用來表明a、b陣列各用了多少元素。

如果a、b陣列都沒用完,那麼就要判斷a、b誰出的元素小,小的存入c中(根據要求知c中元素由小到大排列)。

c語言,關於位運算子的,這個怎麼分析啊,有點看不懂,求高手解答啊!謝謝!!

12樓:匿名使用者

這裡都是按位與運算和右移運算子,一個個看, 知道是這樣計算就行了,具體計算是計算機的事情

13樓:4向日葵

程式出自何處?以我看: 沒有功能,就是老師讓學生練習移位操作的,要是微控制器的程式的話可能就有別用的了

14樓:5千零一

把位運算子看懂,就差不多會了。

15樓:匿名使用者

這個程式裡有兩種位運算子:按位與(&)、按位右移(>>)。

先看優先順序,這個程式裡“()”的優先順序最高,“>>”次高,“&”優先順序第3;

位運算子都是按二進位制運算的,所以要先將所有參與位運算的數字轉換為二進位制。

&:只有對應的兩個二進位制位均為1時,結果才為1,否則為0,例如:

010010

& 000110

____________

000010

>>:將運算元右移n位相當於該數除以2的n次方,例如:60>>2=15。

至於實現什麼功能,你自己算出結果來分析吧

C語言中強制轉換的問題,C語言強制型別轉換問題

巧 float x 你是定義的單精度型,int i 定義的是整型。i int x 是將x強制轉換成整型。整型整型,就是要整數部分,小數部分就會捨去掉。printf x f,i d n x,i 輸出時,x是以百分號f輸出,那麼就不是以整型輸出。在整數後面就會跟六位小數部分,沒有值的位數會以0補上。就像...

C語言進位制轉換問題,C語言中各進位制的轉換問題

大數轉換成小數進位制時主要是求餘演算法,小數進位制轉換成大數進位制時要用n次方演算法。求餘後把數字儲存起來輸出就可以了。16進位制 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 a 1010 b 1011 ...

C語言怎麼把長位元組資料向短位元組資料轉換

怎樣的長位元組 又怎樣的短位元組。型別名 變數名 把一個變數強轉為一個型別。如果要兼顧資料完整問題還要設計相應的演算法。c語言中將一個位元組資料轉換成對應十進位制數字字串 通過格式操作使任意型別的資料轉換成一個字串。如何用c語言將不足64位元組的資料轉換成64位元組的倍數 char msg 收到的訊...