int i=1,j=2; int k=i+++j; 第二条语句的意思是 k=(i++)+j 还是k=i=(++j)为什么 main() { int i=1,j=2,k=3; if(i...

int i=1,j=1,k=1; (i++,--j) && ++k;\u4e3a\u4ec0\u4e48\u8f93\u51fai,j,k\u7ed3\u679c\u662f2,0,1\u800c\u4e0d\u662f2,0,2\uff1f

(i++,--j)&&++k
\u8fd9\u53e5\u8bed\u53e5\u9996\u5148\u6267\u884c\u7684\u662f\u524d\u9762\u90a3\u4e2a\u62ec\u53f7\u7684\u5185\u5bb9\uff0c\u4e5f\u5c31\u662f\u5148\u6267\u884ci++\uff0c\u540e\u6267\u884c--j\uff0c\u800c\u56e0\u4e3ai++,--j\u662f\u4e00\u4e2a\u9017\u53f7\u8868\u8fbe\u5f0f\uff0c\u6240\u4ee5\u8fd9\u4e2a\u8868\u8fbe\u5f0f\u7684\u503c\u5c31\u662f\u540e\u9762\u90a3\u4e2a\u8868\u8fbe\u5f0f\u7684\u503c\uff0c\u4e5f\u5c31\u7b49\u540c\u4e8e
(--j)&&++k
\u4f46\u662f\u56e0\u4e3a--j\u5df2\u7ecf\u7b49\u4e8e0\u4e86\uff0c\u5bf9\u4e8e&&\u8fd9\u4e2a\u8fd0\u7b97\u7b26\u6709\u4e00\u4e2a\u89c4\u5219\uff0c\u5c31\u662f\u5f53\u524d\u9762\u7684\u90a3\u4e2a\u8868\u8fbe\u5f0f\u503c\u4e3a0\u7684\u8bdd\uff0c\u540e\u9762\u90a3\u4e2a\u8868\u8fbe\u5f0f\u5c31\u4e0d\u7f16\u8bd1\u4e86\uff0c\u5176\u5b9e\u4e5f\u5f88\u597d\u7406\u89e3\uff0c\u56e0\u4e3a\u5f53\u524d\u9762\u90a3\u4e2a\u8868\u8fbe\u5f0f\u503c\u4e3a0\u4ee5\u540e\uff0c\u540e\u9762\u90a3\u4e2a\u8868\u8fbe\u5f0f\u7684\u503c\u65e0\u8bba\u662f0\u8fd8\u662f1\uff0c\u7ed3\u679c\u90fd\u662f0\uff0c\u6240\u4ee5\u540e\u9762\u90a3\u4e2a++k\u5c31\u4e0d\u6267\u884c\u4e86

\u4e2a\u4eba\u89c9\u5f97\u8fd9\u9898\u7b54\u6848\u5e94\u8be5\u662f2,2,2. \u539f\u56e0\u662f\uff1aif((j++||k++) && i++) \u9996\u5148\u6267\u884c\u7684\u662fj++\uff0c\u8fd4\u56detrue\uff0c\u6b64\u65f6j=2\u3002 \u4f46\u662f\u540e\u9762\u7684||\u90e8\u5206\uff08\u5373k++\uff09\u662f\u4e0d\u6267\u884c\u7684\uff0c\u6b64\u65f6\u4ecd\u7136\u662fk=2\u3002 \u7136\u540e\u518d\u6267\u884ci++\uff0c\u8fd4\u56detrue\uff0c\u6b64\u65f6i=2\u3002 \u6700\u540e\u8f93\u51fa2,2,2 \u8865\u5145\uff1a \u4f46\u662f\u540e\u9762\u7684||\u90e8\u5206\uff08\u5373k++\uff09\u662f\u4e0d\u6267\u884c\u7684.\u8fd9\u91cc\u662f\u5173\u952e\u70b9\uff01 \u56e0\u4e3a||\u4e0e&&\u7684\u533a\u522b\u5c31\u662f||\u53ea\u8981\u5728\u4e00\u4e2a\u6761\u4ef6\u6210\u7acb\u4e0b\u5c31\u8fd4\u56de\u771f\u503c\uff1b \u800c&&\u5219\u5fc5\u987b\u8981\u5728\u6240\u6709\u7684\u6761\u4ef6\u90fd\u6210\u7acb\u7684\u60c5\u51b5\u4e0b\u624d\u8fd4\u56de\u771f\u503c\u3002 \u8ffd\u95ee\uff1a \u8c22\u8c22!\u521a\u6211\u6253\u9519\u4e86\u7b54\u6848

因为运算符优先级为++大于+
所以第二条语句应该是k=(i++)+j
分解为下面的步骤
1.i+j;(由于i++是先使用i值在表达式中进行运算,再自加1)
2.k=第1步的结果3;
3.i++;(i从1自加为2)

第二个的语句是 k=(i++)+j这个 因为自身的增加 即i++的优先级会高于+
希望我的回答能帮助到你

k=(i++)+j;
在C语言中,尽可能多的从左到右的结合运算符

i和j之间有三个+
没有用()来区分的话 都是从左前右运行的
那么你的语句以 k=(i++)+j运行

1:你没有去判断n和m这两个数哪个更大
2:在使用k之前你并没有赋值
3:第一个for循环应该写成:for(k = m; k <= n; k )
4:第二个for循环应该写成:for(i = 0; i <= j; i )
5:第二个for循环内的if和break是一个语句块 前后加大括号
6:建议将j定义为int类型 后面sqrt(k)的值强转为int类型
注意:for循环的三个表达式的执行顺序
for(表达式1;表达式2;表达式3){
循环体;
}
1:执行表达式1
2:执行表达式2
3:如果表达式2为假 退出循环
4:如果表达式2为真 执行循环体
5:执行表达式3
6:从第2条重新开始执行(即:执行表达式2 进入新的一次循环)

扩展阅读:i人和e人测试 ... int i j m 0 ... j int med res ... int a[3][2] ... int n 3 i j k ... int i 010 j 10 ... int i j k 2 ... int i 0 while i++ 5 ... 汽车上int什么意思 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网