1. 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
2. 条件运算符?和:是一对运算符,不能分开单独使用。
3. 条件运算符的结合方向是自右至左。
解:三条创建子进程的语句,第一句fork()之后,就存在两个进程了,
两个进程继续往下执行,同理 第二个fork()之后,就存在2*2=4个进程了,
再继续往下,到第三个fork()之后,程序当中就已经存在2*4=8个进程了,每个进程输出一句hello
%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
其中%o和%x都是二进制的延伸,即八进制和十六进制,可以适用于unsigned变量输出
scanf()不允许指定精度,而控制符%6.2f违反了这个规定
柔性数组:
把单一元素的数组放在一个struct的尾端,使得每个struct对象可以拥有可变大小的数组。
开始题目中的char data[0] 或写成char data[],即为柔性数组;
data不占用struct的空间,只是作为一个符号地址存在。 因此sizeof的值是两个指针所占字节,即4+4 = 8字节。
unsigned char 8位数据位,范围0-255,
所以-2(11111110)时,溢出变成254;
同理-1(11111111)时,溢出变成255;
最后减到0时,不满足循环条件,for停止。
刚好173次。
7 4 1 ==> 共(7-1)/3+1=3次(1-3=-2,即254,继续循环)
254 251 ... 5 2 ==> 共(254-2)/3+1=85次(2-3=-1,即255,继续循环)
255 252 ... 6 3 ==> 共(255-5)/3+1=85次(3-3=0,退出循环)
所以总共173次。
构造函数和析构函数是两个非常特殊的函数:它们没有返回值.这与返回值为void的函数显然不同.后者虽然也不返回任何值,但还可以让它做点别的事情,而构造函数和析构函数则不允许.