ประเภทข้อมูลบูลีน C99?


คำตอบ:


111

รวม<stdbool.h>ส่วนหัว

#include <stdbool.h>

int main(void){
  bool b = false;
}

มาโครtrueและfalseขยายเป็น1และ0ตามลำดับ

ส่วน7.16 ประเภทและค่าบูลีน< stdbool.h >

  • 1 ส่วนหัวมี<stdbool.h>มาโครสี่ตัว
  • 2 มาโคร
    • บูลขยายเป็น _Bool
  • 3 มาโครสามตัวที่เหลือเหมาะสำหรับใช้ใน #if คำสั่งก่อนการประมวลผล พวกเขาเป็น
    • จริง: ซึ่งขยายเป็นค่าคงที่จำนวนเต็ม 1
    • เท็จ: ซึ่งขยายเป็นค่าคงที่จำนวนเต็ม 0 และ
    • __bool_true_false_are_defined ซึ่งขยายเป็นค่าคงที่จำนวนเต็ม 1
  • 4 แม้ว่าจะมีบทบัญญัติของ 7.1.3 โปรแกรมอาจยกเลิกการใช้งานและบางทีอาจทำให้มาโครบูลใหม่เป็นจริงและเท็จ

18
มันก็ควรจะตั้งข้อสังเกตว่าการแปลงไป_Bool(โดยมอบหมายหล่อ ฯลฯ ) ได้อย่างมีประสิทธิภาพโดย prefixing !!แสดงออกด้วย
R .. GitHub STOP HELPING ICE

57

กรุณาอย่าตรวจสอบคำตอบที่นี่ในหัวข้อที่เกี่ยวข้องนี้พบได้ในDaniWeb

แยกและยกมาที่นี่เพื่อความสะดวกในการอ้างอิง: -


การใช้คำหลักใหม่ใน c99

_Bool : ประเภทบูลีนของ C99 แนะนำให้ใช้ _Bool โดยตรงก็ต่อเมื่อคุณยังคงรักษารหัสเดิมที่กำหนดมาโครสำหรับบูลจริงหรือเท็จอยู่แล้ว มิฉะนั้นมาโครเหล่านั้นจะถูกกำหนดมาตรฐานใน<stdbool.h> ส่วนหัว รวมส่วนหัวนั้นและคุณสามารถใช้บูลได้เช่นเดียวกับที่คุณทำใน C ++

#include <stdio.h>
#include <stdbool.h>

int main ( void )
{
  bool b = true;

  if ( b )
    printf ( "Yes\n" );
  else
    printf ( "No\n" );

  return 0;
}


19
+1 สำหรับคำอธิบายว่าทำไมมีอยู่พร้อมกับ_Bool boolมีประโยชน์มากในการทำความเข้าใจ
eonil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.