คำถามติดแท็ก sizeof

sizeof หมายถึงตัวดำเนินการ C / C ++ มาตรฐานสำหรับการส่งคืนขนาดเป็นไบต์ของนิพจน์หรือประเภทข้อมูล

3
มีเครื่องจักรที่ sizeof (ถ่าน)! = 1 หรืออย่างน้อย CHAR_BIT> 8 หรือไม่
Наэтотвопросестьответына Stack Overflow нарусском : Кто-нибудьвстречалвсвоейпрактике sizeof (ถ่าน)! = 1? มีเครื่องจักร (หรือคอมไพเลอร์) อยู่ที่ไหนsizeof(char) != 1? ไม่มาตรฐาน C99กล่าวว่าsizeof(char)ในการดำเนินการปฏิบัติตามมาตรฐานต้องเป็น 1? ถ้าเป็นเช่นนั้นโปรดให้หมายเลขมาตราและการอ้างอิง อัปเดต: หากฉันมีเครื่อง (CPU) ซึ่งไม่สามารถระบุไบต์ได้ (อ่านน้อยที่สุดคือ 4 ไบต์จัดแนว) แต่มีไบต์เพียง 4 วินาที ( uint32_t) คอมไพเลอร์สำหรับเครื่องนี้สามารถกำหนดsizeof(char)เป็น 4 ได้หรือไม่ sizeof(char)จะเป็น 1 แต่ถ่านจะมี 32 บิต ( CHAR_BITมาโคร) Update2: แต่ขนาดของผลลัพธ์ไม่ใช่ไบต์! มีขนาดเท่ากับ CHAR และถ่านสามารถเป็น 2 ไบต์หรือ (อาจเป็น) 7 …
93 c  char  standards  sizeof  c99 

5
ทำไมแลมบ์ดาถึงมีขนาด 1 ไบต์?
ฉันกำลังทำงานกับหน่วยความจำของ lambdas บางตัวใน C ++ แต่ฉันงงกับขนาดของมันเล็กน้อย นี่คือรหัสทดสอบของฉัน: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << sizeof(f) << std::endl; } คุณสามารถเรียกใช้ได้ที่นี่: http://fiddle.jyt.io/github/b13f682d1237eb69ebdc60728bb52598 ouptut คือ: 17 0x7d90ba8f626f 1 นี่แสดงให้เห็นว่าขนาดของแลมด้าของฉันคือ 1 เป็นไปได้อย่างไร? อย่างน้อยแลมด้าไม่ควรเป็นตัวชี้การนำไปใช้งานหรือไม่?
90 c++  c++11  lambda  c++14  sizeof 


5
ผลการดำเนินงานระดับบิตในขนาดตัวแปรที่ไม่คาดคิด
บริบท เรากำลังพอร์ตโค้ด C ที่คอมไพล์แล้วโดยใช้คอมไพเลอร์ C แบบ 8 บิตสำหรับไมโครคอนโทรลเลอร์ PIC สำนวนทั่วไปที่ใช้เพื่อป้องกันตัวแปรโกลบอลที่ไม่ได้ลงชื่อ (ตัวอย่างเช่นตัวนับข้อผิดพลาด) จากการย้อนกลับเป็นศูนย์มีดังต่อไปนี้: if(~counter) counter++; ผู้ประกอบการระดับบิตที่นี่กลับค่าบิตทั้งหมดและคำสั่งเป็นจริงหากcounterน้อยกว่าค่าสูงสุด ที่สำคัญทำงานได้โดยไม่คำนึงถึงขนาดของตัวแปร ปัญหา ตอนนี้เรากำลังกำหนดเป้าหมายหน่วยประมวลผล ARM แบบ 32 บิตโดยใช้ GCC เราสังเกตเห็นว่ารหัสเดียวกันให้ผลลัพธ์ที่แตกต่าง เท่าที่เราสามารถบอกได้ดูเหมือนว่าการทำงานส่วนเสริม bitwise คืนค่าที่มีขนาดแตกต่างจากที่เราคาดไว้ ในการทำซ้ำสิ่งนี้เรารวบรวมใน GCC: uint8_t i = 0; int sz; sz = sizeof(i); printf("Size of variable: %d\n", sz); // Size of variable: 1 sz = …

3
เหตุใดขนาดของชนิดข้อมูลจึงแตกต่างกันเมื่อค่าถูกส่งโดยตรงไปยังตัวดำเนินการ sizeof
#include <stdio.h> int main() { char a = 'A'; int b = 90000; float c = 6.5; printf("%d ",sizeof(6.5)); printf("%d ",sizeof(90000)); printf("%d ",sizeof('A')); printf("%d ",sizeof(c)); printf("%d ",sizeof(b)); printf("%d",sizeof(a)); return 0; } ผลลัพธ์คือ: 8 4 4 4 4 1 ทำไมเอาต์พุตต่างกันสำหรับค่าเดียวกัน
15 c  int  sizeof 

1
วิธีรับจำนวนองค์ประกอบใน std :: array <T, N> โดยไม่ต้องสร้างอินสแตนซ์
มีแต่มันไม่คงที่จึงต้องใช้อินสแตนซ์ของstd::array&lt;T, N&gt;::size() std::arrayมีวิธีรับค่าที่ส่งกลับ (ซึ่งเป็นNของstd::array&lt;T, N&gt;) โดยไม่ต้องสร้างตัวอย่างของอาร์เรย์หรือไม่ สำหรับอาร์เรย์ปกติฉันสามารถใช้งานได้sizeofแต่ฉันไม่เห็นการรับประกันว่าsizeof(std::array&lt;T, N&gt;) == N * sizeof(T)จะเป็นจริง
9 c++  arrays  c++11  sizeof 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.