#include<stdio.h> void main() { int a=3; a+=(a<1)? a:1; printf("%d\n",a); } 请问它的结果为什么是4.

如题所述

第1个回答  2013-02-26
很明显,当对条件 a < 1 进行判断时,因为a = 3 因此判断结果为false ,将执行 :号后面的表达式-----也就是1-------也就是a += 1, 因为a =3 因此 a += 1 的最终结果为4 。 明白了吗? :)本回答被提问者采纳
第2个回答  2013-02-26
(a<1)?a:1 这里用的是三元运算符,意思是如果a<1成立则等式变成a+=a,如果不成立等式变成a+=1。前一句已经给a赋值为3大于1,所以等式就是a+=1 结果为4
第3个回答  2013-02-26
哪你得了解每个符号代表什么意思,然后再仔细算算看追问

其实我没你想得那么逊 我明白的。。。

追答

呵呵

...void main() { int a=3; a+=(a<1)? a:1; printf("%d\\n",a); }...
很明显,当对条件 a < 1 进行判断时,因为a = 3 因此判断结果为false ,将执行 :号后面的表达式---也就是1---也就是a += 1, 因为a =3 因此 a += 1 的最终结果为4 。 明白了吗? :)

#include<stdio.h> void main(void) { int a=3; a+=a-=a*a=a; print...
错误出在第五行:a+=a-=a*a=a;具体是在a*a=a这里出错了 原因分析:整个表达式是由右向左解释的,这是由赋值运算符的特性确定的。所以表达式等价于:a+=( a-= ( a*a=a ) );而a*a是一个右值,而非左值(就是说这个表达式只能放在等号右边,而不能放在左边)所以出现错误,无法通过编译 ...

...main() { int a=3; a+=a-=a*a; printf("%d\\n",a); } 为什么结果为...
所以先运行*运算,然后再运行-=运算,a += (a -= (a*a))也就是 a = a - (a*a); 此时a的值变为了-6;再运行 a += a; 即 a = a+a; 结果就为-12啦

#include<stdio.h> void main() { int a=0; 3>1 || (a=3) && 3>1...
所以 3>1 || (a=3) && 3>1 所谓的优先级只是把上述等同于3>1 || ((a=3) && 3>1)而已 实际还是从左向右

C语言问题 #include <stdio.h> void main( ) { int a=3,
include <stdio.h> void main( ){ int a=3,b=2,c=1;\/\/定义并赋初值 c-=++b;\/\/这步要分解成两步,根据运算符的优先级表,先算++b,此时b已经不是初值2了,是3,c-=++b等价于c=c-(++b)=1-3=-2 b*=a+c;\/\/等价于b=b*(a+c)=3*(3-2)=3 截止到这一步:a=3,b=...

C语言问题: #include <stdio.h> int main() { int a=3,
a+=b,代表给a赋值为(a+b),-=同理,同时这俩运算符平级。所以顺序为首先a+=a,此时a=2a;然后a-=a,此时=0;然后c=a=0

#include<stdio.h> main() { int a=1; printf("%d\\n",a=a*3,a*3...
<%@ page language="java" contentType="text\/html; charset=utf-8"pageEncoding="gbk"%> <%@page import="java.sql.*" %> <html> <meta http-equiv="Content-Type" content="text\/html; charset=utf-8"> <head>

#include<stdio.h> void main() { int a=3; int b=4; int c=5; print...
include<stdio.h> void main(){ int a=3;int b=4;int c=5;printf("%d,%d\\n", a,b);\/\/这里少个逗号 }

#include<stdio.h> void main() { int a; for(a=1;a<5;a++) a=2*a...
从for循环开始说。a=1;然后a=2*a; (a=2)然后a++ (a=3)然后a<5成立,继续for循环 (a=3)然后a=2*a; (a=6)然后a++ (a=7)然后a<5不成立,退出for循环 (a=7)

#include<stdio.h> void f(int i) { int a=2; a=i++; printf("%d,",a...
函数f(c);是值传递,不改变参数c的值。

相似回答