青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

loop_in_codes

低調(diào)做技術(shù)__歡迎移步我的獨(dú)立博客 codemaro.com 微博 kevinlynx

使用memcmp比較兩個(gè)變量結(jié)果一定嗎?

參考Is using memcmp on array of int strictly conforming?

以下代碼一定會(huì)輸出ok嗎?

#include <stdio.h>
#include <string.h>

struct S { int array[2]; };

int main () {
    struct S a = { { 1, 2 } };
    struct S b;
    b = a;
    if (memcmp(b.array, a.array, sizeof(b.array)) == 0) {
        puts("ok");
    }
    return 0;
}

我在vs2005以及gcc4.4.3上做了測(cè)試,都輸出了ok。但這并不意味這個(gè)代碼會(huì)永遠(yuǎn)輸出ok。問(wèn)題主要集中于這里使用了賦值語(yǔ)句來(lái)復(fù)制值,但卻使用了memcmp這個(gè)基于內(nèi)存數(shù)據(jù)比較的函數(shù)來(lái)比較值。

c語(yǔ)言中的賦值運(yùn)算符(=)被定義為基于值的復(fù)制,而不是基于內(nèi)存內(nèi)容的復(fù)制。

C99 section 6.5.16.1 p2: In simple assignment (=), the value of the right operand is converted to the type of the assignment expression and replaces the value stored in the object designated by the left operand.

這個(gè)其實(shí)很好理解,尤其在不同類(lèi)型的數(shù)字類(lèi)型間復(fù)制時(shí),例如:

float a = 1.1;
int b = a;

因?yàn)楦↑c(diǎn)數(shù)和整形數(shù)的內(nèi)存布局不一樣,所以肯定是基于值的一種復(fù)制。另外,按照語(yǔ)言標(biāo)準(zhǔn)的思路來(lái)看,內(nèi)存布局這種東西一般都屬于實(shí)現(xiàn)相關(guān)的,所以語(yǔ)言標(biāo)準(zhǔn)是不會(huì)依賴(lài)實(shí)現(xiàn)去定義語(yǔ)言的。

上面的定理同樣用于復(fù)雜數(shù)據(jù)類(lèi)型,例如結(jié)構(gòu)體。我們都知道結(jié)構(gòu)體每個(gè)成員之間可能會(huì)有字節(jié)補(bǔ)齊,而使用賦值運(yùn)算符來(lái)復(fù)制時(shí),會(huì)不會(huì)復(fù)制這些補(bǔ)齊字節(jié)的內(nèi)容,是語(yǔ)言標(biāo)準(zhǔn)未規(guī)定的。這意味著使用memcmp比較兩個(gè)通過(guò)賦值運(yùn)算符復(fù)制的兩個(gè)結(jié)構(gòu)體時(shí),其結(jié)果是未定的。

但是上面的代碼例子中,比較的其實(shí)是兩個(gè)int數(shù)組。這也無(wú)法確認(rèn)結(jié)果嗎?這個(gè)問(wèn)題最終集中于,難道int也會(huì)有不確定的補(bǔ)齊字節(jié)數(shù)據(jù)?

C99 6.2.6.2 integer types For signed integer types, the bits of the object representation shall be divided into three groups: value bits, padding bits, and the sign bit. […] The values of any padding bits are unspecified.

這話(huà)其實(shí)我也不太懂。一個(gè)有符號(hào)整數(shù)int,其內(nèi)也有補(bǔ)齊二進(jìn)制位(bits)?

但無(wú)論如何,這個(gè)例子都不算嚴(yán)謹(jǐn)?shù)拇a。人們的建議是使用memcpy來(lái)復(fù)制這種數(shù)據(jù),因?yàn)閙emcpy和memcmp都是基于內(nèi)存內(nèi)容來(lái)工作的。

posted on 2012-08-17 14:07 Kevin Lynx 閱讀(3981) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): c/c++tips

評(píng)論

# re: 使用memcmp比較兩個(gè)變量結(jié)果一定嗎? 2012-08-18 00:59 路過(guò)

我還一直以為默認(rèn)賦值運(yùn)算就是內(nèi)存賦值是標(biāo)準(zhǔn)內(nèi)容呢,原來(lái)是未定義。  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品二区| 久久久久久亚洲精品杨幂换脸| 欧美国产一区二区在线观看| 亚洲国产高清一区| 欧美3dxxxxhd| 欧美xart系列高清| 一区二区三区免费网站| 一区二区精品| 国产日韩欧美另类| 蘑菇福利视频一区播放| 欧美日韩a区| 欧美中文字幕在线播放| 久久久精品久久久久| 91久久久久久久久| 一级成人国产| 影音先锋亚洲电影| 亚洲精品久久| 国产精品久久久久一区| 免费成人你懂的| 欧美日韩一区二区高清| 久久久综合精品| 欧美日韩高清在线| 欧美一区二区免费观在线| 久久久天天操| 亚洲专区一区| 久久手机精品视频| 亚洲一区二区三区国产| 久久久久高清| 亚洲综合色噜噜狠狠| 久久国产精品99国产精| 一区二区三区视频观看| 久久精品一本久久99精品| 99精品国产高清一区二区| 欧美在线影院| 亚洲一级二级| 免费在线观看一区二区| 亚洲综合色激情五月| 欧美成人精品h版在线观看| 亚洲欧美日韩一区二区在线| 能在线观看的日韩av| 久久成人这里只有精品| 欧美日韩三级视频| 欧美黄色网络| 黄色小说综合网站| 亚洲男人第一av网站| 亚洲一区二区三区国产| 欧美激情a∨在线视频播放| 久久免费一区| 国产午夜一区二区三区| 亚洲午夜一区| 在线一区二区日韩| 欧美福利精品| 欧美不卡在线视频| 激情欧美亚洲| 久久精品国产久精国产一老狼| 午夜视频久久久| 欧美视频一区二| 一本色道精品久久一区二区三区| 亚洲国产精品一区二区久| 久久久久国产精品麻豆ai换脸| 久久国产色av| 国产毛片久久| 亚洲欧美一区二区原创| 欧美一区1区三区3区公司| 在线日韩精品视频| 国产综合自拍| 亚洲天堂av高清| 欧美久久久久久蜜桃| 亚洲国产精品一区二区三区| 亚洲大片免费看| 久久久综合网| 欧美激情精品久久久久久| 亚洲承认在线| 免费视频最近日韩| 亚洲理论电影网| 亚洲午夜久久久久久久久电影院 | 午夜激情一区| 欧美在线播放视频| 激情一区二区| 麻豆av一区二区三区| 亚洲高清视频一区二区| 亚洲免费成人| 国产精品久久久久高潮| 先锋影院在线亚洲| 久久综合狠狠综合久久综合88| 国内偷自视频区视频综合| 久久婷婷久久| 亚洲乱码精品一二三四区日韩在线 | 国产精品乱码一区二区三区 | 久色婷婷小香蕉久久| 亚洲福利国产精品| 欧美激情一区二区三区在线视频| 99爱精品视频| 欧美在线三区| 亚洲国产毛片完整版| 国产精品成人在线| 欧美专区日韩专区| 亚洲美女网站| 久久久青草婷婷精品综合日韩| 亚洲国产精品久久久久久女王| 欧美裸体一区二区三区| 午夜精品久久久久久久白皮肤 | 狼人天天伊人久久| 99pao成人国产永久免费视频| 国产精品欧美久久| 另类av导航| 亚洲伊人伊色伊影伊综合网| 你懂的网址国产 欧美| 亚洲在线观看| 亚洲国产日韩欧美在线99| 国产精品女同互慰在线看| 欧美成人免费va影院高清| 香蕉久久夜色精品国产使用方法| 亚洲第一在线视频| 久久精品官网| 亚洲一区成人| 亚洲老板91色精品久久| 好男人免费精品视频| 欧美午夜激情在线| 欧美福利视频网站| 久久夜色精品国产噜噜av| 亚洲自拍16p| 这里是久久伊人| 亚洲级视频在线观看免费1级| 久久久免费精品视频| 亚洲尤物在线视频观看| 亚洲精品小视频在线观看| 狠狠色综合色综合网络| 国产欧美一区二区三区久久 | 欧美日韩视频在线第一区| 久久伊人一区二区| 欧美一区二区三区四区在线| 亚洲图片欧洲图片av| 日韩午夜电影在线观看| 亚洲福利视频三区| 欧美成人国产一区二区| 久久天堂av综合合色| 欧美中文字幕在线| 欧美在线视频免费观看| 欧美一区二区黄| 欧美一区二区三区四区夜夜大片| 亚洲一级特黄| 亚洲主播在线| 午夜久久一区| 香蕉亚洲视频| 久久久999| 久久综合色88| 欧美激情一区二区三区在线视频观看 | 一本色道88久久加勒比精品| 亚洲激情图片小说视频| 亚洲日本电影在线| 亚洲精品五月天| 亚洲午夜成aⅴ人片| 中文欧美日韩| 性久久久久久久久| 久久久噜噜噜久久狠狠50岁| 另类图片国产| 欧美激情一区二区久久久| 亚洲人成网站在线观看播放| 日韩午夜免费视频| 亚洲专区欧美专区| 久久免费少妇高潮久久精品99| 久久午夜av| 欧美人成在线视频| 国产精品视频久久一区| 国产一区二区三区在线观看网站 | 欧美日韩国产一区二区三区地区 | 欧美日韩国产另类不卡| 国产精品亚洲不卡a| 精品91在线| 亚洲美女中文字幕| 香港久久久电影| 久久伊人亚洲| 亚洲精品影院| 久久精品中文| 国产精品av一区二区| 含羞草久久爱69一区| 日韩图片一区| 久久爱另类一区二区小说| 亚洲第一毛片| 亚洲午夜性刺激影院| 另类图片国产| 国产女人18毛片水18精品| 在线日韩视频| 欧美在线免费一级片| 亚洲国产欧美精品| 欧美在线精品免播放器视频| 欧美日韩国产天堂| 亚洲高清一区二| 午夜精品区一区二区三| 欧美激情免费观看| 性色av一区二区三区红粉影视| 免费看的黄色欧美网站| 国产嫩草一区二区三区在线观看| 亚洲人午夜精品| 久久久亚洲影院你懂的| 亚洲午夜小视频| 欧美日韩在线一区二区三区| 亚洲国产精品成人| 久久婷婷久久|