C++基础 — C++中的变量和三目运算符

C++中所有的变量和函数都必须有类型

  C语言中的默认类型在C++中是不合法的。

在C++中,int f( ); 和int f(void);具有相同的意义,都表示返回值为int 的无参函数。

在C中,int f( ); 表示返回值为int,可接受任意参数的函数;

int f(void); 表示返回值为int 的无参数函数。

 

//在c语言中,表达式的结果 放在什么地方  寄存器

//在C语言中,表达式的返回值 是变量的值(一个数)——   一个确切的数不能做左值。

//在C++中,表达式返回的是变量本身  —— 可作为左值;因此可以出现在程序的任何地方

C++编译器如何做到让表达式返回一个内存空间,即内存首地址  即指针的?

{

  int a = 10;

  int b = 20;

  (a < b ? a : b) = 30;

  printf("a = %d, b = %d\n", a, b);

}

在C++上述代码正常运行,a= 30, b =20;

在C中会报错,(a < b ? a : b) = 30; ====》左边运行的结果是a的值  20 = 30;(变量不能为左值)。

故代码修改为:

{

  int a = 10;

  int b = 20;

  *(a < b ? &a : &b) = 30;

  printf("a = %d, b = %d\n", a, b);

}

 

本质: C++编译器帮我们完成了取地址的操作。

posted @ 2017-10-18 20:28  Liu_Jing  Views(478)  Comments(0Edit  收藏  举报