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

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

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語言中賦值時不同資料型別的轉換

你說的int應該是16位,2位元組。char型別只佔用了一個位元組,8位。所以轉化的時候只要取int型16位的低8位就夠了。這個和變數的記憶體儲存方式有關係,你要弄懂變數怎麼在記憶體中放置和儲存的就很容易理解了。 是int 轉為char 才取 int 的低8位 int 有 32位 轉成char型別時...

c語言成績轉換的一道題,C語言成績轉換的一道題

這是我修改後的 include int main else if 80 t t 89 else if 70 t t 79 else if 60 t t 69 else if 0 t t 59 else if t 0 t 100 return 0 正青春夢飛揚 關鍵是如何讀取檔案中的資料,每次讀取一行...

兩道簡單的c語言程式設計題目!如圖 求詳細解答

第二道看不清楚 這是第一道 int a cin a for int i i cout 1234567890 1.include using namespace std void fun1 int m void fun2 int main int number cin number int value...