一段c 程式,誰幫忙解釋一下,小弟看不懂

2022-10-22 15:10:55 字數 3223 閱讀 7923

1樓:匿名使用者

哥幫你看,給分我。。

我先洗澡,有什麼問題繼續問

double t=15.9375;

//double佔8個位元組。 &t 則是指向double型的指標(指向8個位元組的第一個位元組)。

char *low=(char *)&t;

char 佔1個位元組,char *low 為指標,指向char型變數的第一個位元組,也是唯一一個位元組。

(char *) &t ::::&t本來是表示8個位元組的double的指標。但被強制轉換成表示1個位元組的char指標。指向double t 的第一個位元組。

所以 char *low=(char *)&t; 指向double t 的第一個位元組。

char *high=(char *)(&t+1)-1;

(&t+1) &t還沒被強制轉換,所以&t + 1 表示指向double t 後的8個位元組。

(char *)(&t+1)強轉後,指向 &t+1表示double t 後的的第1個位元組。

後退一個(char *) 的距離,即一個位元組。指向double t中八個位元組中的最後一個位元組。

char *cp=high;

指向double t中八個位元組中的最後一個位元組。

所以最後是:

char *low=(char *)&t; 指向double t 的第一個位元組。

char *cp=high;指向double t中八個位元組中的最後一個位元組。

2樓:匿名使用者

double是8個位元組,char *low=(char *)&t;和char *high=(char *)(&t+1)-1;就是指向double中首位元組和末位元組的指標,&t+1是跳過double型別的8個位元組。最後就是各個位元組的二進位制表示輸出。希望可以幫到你,呵呵!

3樓:

因為在32位windows中存放double佔用8位元組,而一個char型別佔用1個位元組

char *low=(char *)&t;表示將low指向t這個浮點數的最後一個位元組

char *high=(char *)(&t+1)-1;表示將high指向t這個浮點數的第一個位元組

下面的迴圈, bitset<8>說明一次輸出8位, 也就是1個位元組.

從t這個浮點數的第一個位元組開始輸出.一直輸出到最後一個位元組

因為cp是一個char型別的指標, 所以cp--就會向前移動一個位元組, 剛好8位.

4樓:匿名使用者

double t=15.9375;//這個就必說了吧

char *low=(char *)&t;//這個稍微複雜點。。定義一個指向char資料型別的指標變數low,這個指標變數low指向存放t變數地址的地址。

這個和上面差不多,稍微有點繞就是把存放t的地址加1後,用另外一個指標指向這個加1後的地址(把這個地址叫a),也就是開闢一個char空間來存放(a),這個char空間地址叫b,再然後把b-1,最後再用high這個指標指向b-1這個地址。

char *cp=high;//注意,這裡的high裝的是上面的b-1這個地址,然後用指標變數cp來指向high。

好累。。。建議你去看看譚浩強的《c程式設計》指標變數那一章,他用一種很通俗易懂的方式來詮釋指標。

分給我哦。。

5樓:小小樂師

其實將char *cp=high;去掉,

改while(cp >=low)====》while(high >=low是一樣的

一道c++填空題,求高手幫忙講解翻一下,小弟新手,看的不怎麼懂。

6樓:花花浪客

答案:(1) sqrt(dx() * dx() +dy() * dy() );

這個沒什麼好說的,求兩點間距離的公式。勾股定理,古人都知道

(2) line::line(point pts, point pte) pt1(pts.x, pts.y),pt2(pte.x,pte.y) {};

用輸入的兩個點來初始化類成員。這個地方前兩位同學回答的略微有點問題,一個是沒有函式體,編譯會出錯;另一個使用了point的拷貝建構函式,但是由於point在題目裡沒有定義拷貝建構函式,雖然現代編譯器都會有預設的拷貝建構函式,不過不知道考官是否給分啊

(3)cout<<"the length of line: "<

直接輸出長度

7樓:匿名使用者

class point //定義座標點類

point(int

x0,int y0)

intx()

inty()

void

printp()

};class line: public point //利用座標點類定義直線類

double

dy()

double

length();

void

printl(); //輸出直線的兩個端點和直線長度};line::line(point pts, point pte) ___(2)___//pt1(pts),pt2(pte);

void line::printl()

8樓:ok洛陽水席

dx()*dx()+dy()*dy();

pt1(pts),pt2(pte);

length();

關於校驗和計算方面的c++**,哪位大俠幫忙解讀一下,小弟初學,不太懂!謝謝!

9樓:

**不懂?

補充點操作符:

1) |按位或操作符:result=exp1|exp2;當exp1和exp2中對應位中至少有一個為1時,result中對應位為1,否則為0。

2) & 按位與操作符::result=exp1&exp2;當exp1和exp2中對應位全為1時,result中對應位為1,否則為0。

3)^ 按位異或操作符:result=exp1^exp2;當exp1和exp2中對應位不相同時,result中對應位為1,否則為0。

4)~ 反轉操作符:將位容器中的所有位都反轉,1變為0,0變為1。

5)<< 按位左移操作符:exp<> 按位右移操作符:exp>>n,將容器中所有的位向右移n位,空出的位用0填充。

7)|=,&=,^= 分別對應|&^三種操作符的複合操作符。

請高手幫小弟解釋一下這個小程式

exit 0 不論程式執行到 都是直接結束程序!return 0只是返回到上次函式呼叫的地方,比函式a呼叫函式b,如果在b的某處return 0 那麼程式會返回到a!如果在main函式裡return 0的話和exit 0 效果差不多,不過在作業系統看還是有區別的,exit 0 系統認為是終止執行,r...

查詢大神幫忙解釋一下下面這段c語言程式

你是不是用了什麼網頁翻譯,然後給複製過來了?可以的話請發源 額 這個哪個大神能看懂。求大神幫忙解釋一下下面這段c語言程式!這是一個高精度程式,概括地說就是給加法和乘法分別寫了函式,用我們平時筆算 豎式 一樣的方法算。計算int型存不下的大資料時常用這種方法。你具體 不懂可以把那段抽出來追問我。找個大...

哪位高人可以幫忙給小弟解釋一下這首詩

獨上江城bai滿目秋,此句點du 江邊的古城,即南京。一鳥帶煙來別渚,回數帆和雨下歸舟。晚煙悽迷中,一隻水鳥孤零零地落在僻靜無人的沙洲上。秋雨淅瀝不停,江面上稀落地飄零著幾片帆影,駛向歸途。蕭蕭暮吹驚紅葉,慘慘寒雲壓舊樓。蕭瑟的晚風,把山麓層林的紅葉吹得七零八落。暗淡的寒雲密佈低空,陰沉沉地似乎要把...