zoukankan      html  css  js  c++  java
  • C 语言中赋值表达式的返回的逻辑值 沉沉_

    我们知道,在C 语言中经常使用 诸如 if(表达式){} ,while (表达式) {} 形式的判断语句,当表达式为真时执行 {} 中的函数体,但是当表达式为赋值表达式时怎么判断该表达式为真还是为假?或者当表达式为逗号表达式式又该怎么使用?

    记住一个原则:C语言赋值表达式所代表的值就是被赋值变量最终被赋予的值。

    以下测试代码可以证明以上观点:

    View Code
     1 #include <stdio.h>
     2 
     3 int main(int argc, const char *argv[])
     4 {
     5     int i;
     6     printf("the value is %d\n", i = -1);
     7     printf("the value is %d\n", i =123);
     8     printf("the value is %d\n", i = 0);
     9     return 0;
    10 }

    那么以下代码的结果就很好理解了!

     1 #include <stdio.h>
     2 
     3 int main(int argc, const char *argv[])
     4 {
     5     int i;
     6     //当赋值为0时赋值表达式代表的逻辑值为假,所以下列语句不会执行
     7     if (i=0) {
     8         printf("i=0\n");
     9     }
    10     //当赋值为非0时赋值表达式代表的逻辑值为真,所以下列语句会执行
    11     if (i=1) {
    12         printf("i=1\n");
    13     }
    14     //当赋值为非0时赋值表达式代表的逻辑值为真,所以下列语句会执行
    15     if (i=-1) {
    16         printf("i=-1\n");
    17     }
    18     //逗号表达式代表的逻辑值为最后一个表达式的逻辑值,所以下列语句不会执行
    19     if (i=1,i=0) {
    20         printf("i=1,i=0\n");
    21     }
    22     //逗号表达式代表的逻辑值为最后一个表达式的逻辑值,所以下列语句会执行
    23     if (i=0,i=1) {
    24         printf("i=0,i=1\n");
    25     }
    26 
    27 
    28 
    29     return 0;
    30 }
  • 相关阅读:
    elasticsearch painless脚本评分
    elasticsearch relevance score相关性评分的计算
    java 多线程间通信(二)
    java 多线程间通信(一)
    java CountDownLatch、CyclicBarrier和 Semaphore用法
    java 深入剖析ThreadLocal
    java中String、StringBuffer、StringBuilder的区别
    Leetcode: LRU Cache
    Leetcode: Anagrams(颠倒字母而成的字)
    Leetcode: First Missing Positive
  • 原文地址:https://www.cnblogs.com/chenchenluo/p/2484867.html
Copyright © 2011-2022 走看看