C++ > stdint.h > sizeof(int[][3])とsizeof(uint8_t[][3]) > 48と12
動作環境
ideone > C++14
C++ Builder XE4でも確認
C++ Builder XE4で実装していたプログラムにてstdint.hを使い始めて、はまった。
#include <iostream>
using namespace std;
#include <stdint.h>
static const int kTable_cond1[][3] = {
{ 1, 0, 0 },
{ 0, 1, 0 },
{ 0, 0, 1 },
{ 0, 1, 1 }
};
static const uint8_t kTable_cond2[][3] = {
{ 1, 0, 0 },
{ 0, 1, 0 },
{ 0, 0, 1 },
{ 0, 1, 1 }
};
int main() {
printf("%zu\n", sizeof(kTable_cond1));
printf("%zu\n", sizeof(kTable_cond2));
return 0;
}
結果
48
12
上記の違いにより
int tbl[3];
int sizeCond = sizeof(kTable_conditions) / sizeof(tbl);
の結果が4と1の違いが出て、はまった。
@SaitoAtsushi さんに上記に関する詳細記事を用意いただきました。
感謝です。
Author And Source
この問題について(C++ > stdint.h > sizeof(int[][3])とsizeof(uint8_t[][3]) > 48と12), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/100e4c88e4c165fb5e3e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .