天天看點

sizeof運算符和size_t類型、取模運算符%、增量和減量運算符

sizeof運算符以位元組為機關傳回其操作數的大小(在c中,1個位元組被定義為char類型所占用空間的大小。在過去,一個位元組通常是8位,但是一些字元集可能使用更大的位元組)

sizeof執行個體程式:

<code>#include&lt;stdio.h&gt;</code>

<code>int</code> <code>main()</code>

<code>{</code>

<code>int</code> <code>n=0;</code>

<code>size_t</code> <code>intsize;</code>

<code>intsize=</code><code>sizeof</code><code>(</code><code>int</code><code>);</code><code>//c規定sizeof傳回size_t類型的值,這是一個無符号整數類型,但不是一個新類型,</code>

<code>printf</code><code>(</code><code>"n=%d,n has %u bytes:all ints have %u bytes.\n"</code><code>,n,</code><code>sizeof</code> <code>n,intsize);</code><code>//我的系統%zd無法實作,是以用%u(%lu)來替代。</code>

<code>return</code> <code>0;</code>

<code>//c有個typedef機制,它允許您為一個已有的類型建立一個别名。如:typedef double real;  使得real 稱為duble 的别名,real deal;編譯器看到real,回想起typedef 語句把real定義為double的别名,于是把deal建立為一個double類型的變量。</code>

<code>}</code>

運作結果:

<a href="https://s2.51cto.com/wyfs02/M00/9D/3A/wKiom1l8DO2AKFmLAAAHqlbLZ5w678.png" target="_blank"></a>

2、取模運算:while()循環:

執行個體程式如下:

<code>//min_sec.c把秒數轉換為分鐘和秒</code>

<code>#define SEC_PRE_MIN 60</code>

<code>{   </code><code>int</code> <code>sec=60;</code>

<code>    </code><code>int</code> <code>min,left;</code>

<code>    </code><code>printf</code><code>(</code><code>"please convert seconds into minutes and seconds.\n"</code><code>);</code><code>/*注意此處/n不可缺一部分,我忘記了n,隻有/程式</code>

<code>    </code><code>就一直編譯報錯。*/</code>

<code>    </code><code>printf</code><code>(</code><code>"enter the number of the seconds(&lt;=0 to quit):\n"</code><code>);</code>

<code>while</code><code>(sec&lt;=1000)</code>

<code>    </code><code>sec=sec+100;</code>

<code>    </code><code>min=sec/SEC_PRE_MIN;</code><code>//得到分鐘數;</code>

<code>    </code><code>left=sec%SEC_PRE_MIN;</code><code>//取模運算得到秒數;</code>

<code>    </code><code>printf</code><code>(</code><code>"%d seconds is %d minuts and %d seconds.\n"</code><code>,sec,min,left);</code>

<code>printf</code><code>(</code><code>"please stop convert!\n"</code><code>);</code>

運形結果:

<a href="https://s4.51cto.com/wyfs02/M01/9D/3B/wKiom1l8E1PQTP6QAABTvwFQWo0530.png" target="_blank"></a>

3、

Profix字首模式++i就完全等價于i=i+1;先加1後指派。是以顯而易見,i++就是先指派後加1;--等同。

4、本章總結,用一個綜合的例子來結尾,其中要注意的問題,就是程式一定要細心,不可犯低級錯誤,打錯忘定義之類的!

<code>//綜合示例程式:running.c</code>

<code>#define S_PER_M 60//每分鐘的秒數</code>

<code>const</code> <code>int</code> <code>S_PER_H =3600;</code><code>//每小時的秒數</code>

<code>const</code> <code>double</code> <code>M_PER_K =0.62137;</code><code>//每公裡的英裡數</code>

<code>int</code> <code>main(</code><code>void</code><code>)</code>

<code>double</code> <code>distk,distm;</code><code>//分别以公裡和英裡記得跑過的距離</code>

<code>double</code> <code>rate;</code><code>//以英裡每小時位機關的平均速度</code>

<code>int</code> <code>min,sec;</code><code>//跑步時用的分鐘數和秒數</code>

<code>double</code> <code>mtime;</code><code>//跑完一英裡所用的時間以秒記</code>

<code>int</code> <code>mmin,msec,</code><code>time</code><code>;</code><code>//跑完一英裡所用的時間,以分鐘、秒記</code>

<code>printf</code><code>(</code><code>"this program converts your time for a metric race\n"</code><code>);</code>

<code>printf</code><code>(</code><code>"to a time for running a mile and to your average\n"</code><code>);</code>

<code>printf</code><code>(</code><code>"speed in miles per hour.\n"</code><code>);</code>

<code>printf</code><code>(</code><code>"please enter the kilometers, the distance run .\n"</code><code>);</code>

<code>scanf</code><code>(</code><code>"%lf"</code><code>,&amp;distk);</code><code>//lf表示讀取一個double 類型的數值</code>

<code>printf</code><code>(</code><code>"Next enter your time in minuts and seconds.\n"</code><code>);</code>

<code>printf</code><code>(</code><code>"begin by entering the minutes.\n"</code><code>);</code>

<code>scanf</code><code>(</code><code>"%d"</code><code>,&amp;min);</code>

<code>printf</code><code>(</code><code>"now enter the seconds. \n"</code><code>);</code>

<code>scanf</code><code>(</code><code>"%d"</code><code>,&amp;sec);</code>

<code>time</code><code>=S_PER_M*min+sec;</code><code>//把時間轉換為全部用秒表示</code>

<code>distm=M_PER_K*distk;</code><code>//把公裡轉化為英裡,</code>

<code>rate=distm/</code><code>time</code><code>*S_PER_H;</code><code>//時間/距離=跑完每英裡的用時</code>

<code>mtime=(</code><code>double</code><code>)</code><code>time</code><code>/distm;</code>

<code>mmin=(</code><code>int</code><code>)mtime/S_PER_M;</code>

<code>msec=(</code><code>int</code><code>)mtime%S_PER_M;</code>

<code>printf</code><code>(</code><code>"you ran %1.2f km (%1.2f miles)in %d min,%d sec.\n"</code><code>,distk,distm,min,sec);</code>

<code>printf</code><code>(</code><code>"that pace corresponds to running a mile in %d min,"</code><code>,mmin);</code>

<code>printf</code><code>(</code><code>"%d sec.\n your average speed was %1.2f mph.\n"</code><code>,msec,rate);</code>

運作結果如下:

<a href="https://s2.51cto.com/wyfs02/M00/9D/3C/wKiom1l8JRvyl8pVAACDiBQd1tM763.png" target="_blank"></a>

本文轉自 lillian_trip 51CTO部落格,原文連結:http://blog.51cto.com/xiaoqiaoya/1951931,如需轉載請自行聯系原作者

繼續閱讀