其实我没你想得那么逊 我明白的。。。
追答呵呵
...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的值。