1. 程式人生 > 其它 >開發手冊—編碼規約(一)

開發手冊—編碼規約(一)

技術標籤:c++c++

c++布林型別,三目運算子,new和delete詳解TOC

c++布林型別

1.標準 c++的 bool 型別有兩種內建的常量 true(轉換為整數 1)和 false(轉換為整數 0) 表示狀態。這三個名字都是關鍵字。 bool 型別只有兩個值,true(1 值),false(0 值) bool 型別佔 1 個位元組大小 給 bool 型別賦值時,非 0 值會自動轉換為 true(1),0 值會自動轉換 false(0);
2.C語言並沒有徹底從語法上支援“真”和“假”,只是用 0 和非 0 來代表。
程式碼演示:

#include <iostream>
using
namespace std; void test01() { bool mybool; cout<<sizeof(bool)<<endl; mybool=false; cout<<"false="<<false<<endl; cout<<"true"<<true<<endl; } int main(int argc, char *argv[]) { test01(); return 0; }

在這裡插入圖片描述
3.任何數字值或指標值都可以被隱式轉換為bool值。任何非零值都被轉換為true,而零被轉換成false:

bool a=-100;//true
bool b=0;//false

三目運算子a>b?a>b

1.c語言三目運算表示式返回值為資料值,為右值,不能賦值
程式碼演示:

#include <iostream>
using namespace std;
int main()
{
    int a=40;
    int b=50;
    printf("結果:%d\n",a>b?a:b)//50
    //a>b?a:b整體結果為右值不能被賦值
    //a>b?a:b=100;//error
}

2.c++經常用三目運算(?:)符取代if~else,通用·格式如下:

expression1?expression2:expression3

如果expression1為true,則表示式的值為expression2,反之表示式值為expression3.程式碼演示:

#include <iostream>
using namespace std;
int main()
{
    int a,b;
    cout<<"Enter a b:";
    cin>>a>>b;
    cout<<"The larger of"<<a<<"and"<<b;
    int c =a>b?a:b;
    cout<<"is"<<c;
    return 0;
}

在這裡插入圖片描述
當你輸入25和28兩個數,通過a>b?a:b時,表示式不滿足輸出b,滿足時輸出a。

new 和delete運算子介紹

1.在c語言可以用庫函式malloc()來分配空間;在c++中也可以,但是在c++更好的方法用——new運算子。
程式碼演示:

int *p=(int *)malloc(sizeof(int)*8);//分配8個int的記憶體空間
free(p);//演算法記憶體

2.在C++中,這兩個函式仍然可以使用,但是C++又新增了兩個關鍵字,new 和 delete:new 用來動態分配記憶體,delete 用來釋放記憶體。

int *pn = new int;  //分配1個int型的記憶體空間
delete pn;  //釋放記憶體

3.用new建立動態陣列:

int *pt= new int[10];  //分配10個int型的記憶體空間
delete[] pt;

通常 new 和 delete、new[] 和 delete[] 操作符應該成對出現,不能和C語言中 malloc()、free() 一起使用,對空指標使用delete是安全的.
使用動態陣列:

#include <iostream>
using namespace std;
int main()
{
  double *p3= new double [3];
  p3[0]=0.2;
  p3[1]=0.5;
  p3[2]=0.8;
  cout<<"p3[1] is"<<p3[1]<<".\n";
  p3=p3+1;
  cout<<"Now p3[0] is"<<p3[0]<<"and";
  cout<<"p3[1] is"<<p3[1]<<".\n";
  p3=p3-1;
  delete [] p3;
  return 0;
}

在這裡插入圖片描述
程式中將·指標p3陣列名來使用,p3[0]為第一個元素,依次類推。下面的程式碼指出陣列名和指標的區別:

p3=p3+1;

不能修改陣列名的值,但指標是變數,因此可以修改值。