1 以下正确的是(B)
A在C语言中,逻辑真值和假值分别对应1和0
B关系运算符两边的运算对象可以是c语言中任意合法的表达式
C对于浮点变量x和y,表达式:x==运算非法的,会出现编译错误
D分支结构是根据算式表达式的结果来判断流程走向的
分析:
A 关系表达式和逻辑表达式的值 是布尔型:真或假(true or false),即0或1,但c语言没有布尔类型,以0为假,非0即真。
B是合法的,语法正确,算法错误。
D分支结构的流程走向是根据表达式的值,并不仅仅是算式表达式的值。
2.分析下列程序
#include<iostream>
using namespace std;
int main() {
int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
return 0;
}
输出结果是 a=%d,b=%d
C 语言中用 "%%" 打印输出字符 "%", 所以 %%d, 输出为 %d 两个普通字符 , 而不是格式控制符 "%d" 的含义 , 所以打印结果为 C 。
3.分析下列程序,输出结果是253.
#include<iostream>
using namespace std;
int main() {
unsigned char i=1;
i-=4;
printf("%d",i);
return 0;
}
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1)、先取1的原码:00000000 00000000 00000000 00000001
2)、得反码: 11111111 11111111 11111111 11111110
3)、得补码: 11111111 11111111 11111111 11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF
void swap_int(int *a,int *b) {
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
int power(int b,int e) {
if(e==0) return 1;
if(e%2==0) return power(b*b,e/2);
return b*power(b*b,e/2);
}
int main() {
printf("hello");
fork();
printf("hello");
}