天天看点

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,如需转载请自行联系原作者

继续阅读