日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

数组定义

發布時間:2024/6/21 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 数组定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在我們學習的語言當中,C/C++語言要求我們定義的數組在編譯時必須為確切的整數值。在modern C++一書中給我們提供了一種定義數組的方法:

int array[(count<=1)?1:0];
我們先不管count的值為多少,數組里面是一個表達式,表達式的值只可能取1或者0,那么數組該如何定義呢?這條語句是正確的嗎?

在gcc中,該語句被正常編譯通過,并且并沒有產生不良影響,而且也不起什么作用,給數組arrary[0] = 1;也不產生錯誤,注意array數組定義為0個!??!

在vs2005版本中,該語句就不能夠被正常編譯,出現三條錯誤:
error C2057: 應輸入常量表達式
error C2466: 不能分配常量大小為 0 的數組
error C2133: “array”: 未知的大小

而在modern C++中說到此處可以被編譯,而且在數組個數為0的時候,會提出錯誤信息,從而在編譯期獲取程序錯誤,而不必等到運行時(assert)來獲取。

modern C++的原話如下:
The simplest solution to compile-time assertions (Van Horn 1997), and one that works in C as well as in C++, relies on the fact that a zero-length array is illegal.
#define STATIC_CHECK(expr) { char unnamed[(expr) ? 1 : 0]; }
這是侯捷書中的翻譯
最簡單的方式稱為 compile-time assertions(Van Horn 1997),在 C 和 C++ 語言中都可以良好運作。它依賴一個事實:大小為零的 array是非法的。
#define STATIC_CHECK(expr) { char unnamed[(expr) ? 1 : 0]; }

從上面的調試結果來看,modern C++的說法大小為零的array數組是非法的,但在目前主流的編譯器中支持的都不是很好。也許modern C++說的是標準c++中的內容,但是我們知道,目前仍有大部分編譯器對標準c++支持的不是很好,很多時候,我們更需要對自己所用編譯器支持多少標準C++有一個更清楚的了解!

因此,雖然說modern c++是一本非常不錯的書,但其中的一些內容,需要在編譯器上調試過才知道是否可以在實際項目中使用,否則,將會死的很慘,尤其是gcc中的未提示出錯誤,可以說是潛伏在程序中的艾魔!

/*
*
* Copyright (c) 2011 Ubunoon.
* All rights reserved.
*
* email: netubu#gmail.com replace '#' to '@'
* http://www.cnblogs.com/ubunoon
* 歡迎來郵件定制各類驗證碼識別,條碼識別,圖像處理等軟件
* 推薦不錯的珍珠飾品,歡迎訂購
* 宜臣珍珠(淡水好珍珠)

*/

總結

以上是生活随笔為你收集整理的数组定义的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。