如果x的当前值为5,则执行语句“if(x=3) x=x+5”后,x的值认为5.这句话对还是错?

1、在C++语言中,表达式(010+2)的值是?为什么?
2、声明语句为“char a[10]”,执行printf(“%d,%d\n”,strcmp("abc","aBc"),strlen(strcpy(a,"windows")))的输出结果是什么?


x=3是赋值表达式,就是将3赋值给x,表达式的返回值为3,这时x的值为3,由于返回值3为真,会进入if语句,然后执行x = x + 5,就是将3 + 5后赋值给x,最后x的值为8

010,以0开头的整数,为8进制
以0x开头的整数,为16进制

010转换成10进制就是8,运算结果以10进制显示就是10,以8进制显示是12

printf(“%d,%d\n”,strcmp("abc","aBc"),strlen(strcpy(a,"windows")))
strcmp(A,B)为字符串比较函数,若A>B,则返回1,A=B则返回0,A<B则返回-1
A和B的大小以ASCII码表为顺序
由于,在ASCII中,小写的字母排在大写的字母前,故"abc">"aBc",所以第一个输出1
strcpy(A,B)为字符串拷贝函数,返回值为源字符串B
strlen(A)用来求字符串的实际长度
由于strcpy(a, "windows")返回字符串"windows",故字符串的长度为7,所以第二个输出7

综上,输出结果是:1,7
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-11
你这句代码根本就不能编译通过。原因就是if语句的条件表达式要是能够判断真假的逻辑值,即0或者1,x=3是赋值表达式,编译根本就不能判断条件的真假。

如果你改正,因为当前值x=5,条件是x=3,显然不能成立,没有其他操作的话x的值是不变的。
第2个回答  2010-01-11
if里面是“==” 号还是 “=”号?
如果是一个=,那么,x执行完应该等于8
如果是两个=,则x的值为5
相似回答