i++和++i的区别及在for()循环语句中的应用细节

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a = 5, b;
    b = a++; //我们可以这样理解该语句执行细节:步骤1、b=a;  步骤2、a=a+1;
    printf("\n  a = 5 ,b未赋值,若 b = a++,  则有:b = %d,a = %d  \n\n", b, a);

    int c = 5, d;
    d = ++c;  //我们可以这样理解该语句执行细节:步骤1、c=c+1;  步骤2、d=c;
    printf("\n  c = 5 ,d未赋值,若 d = ++c, 则有:c = %d , d = %d  \n\n", c, d);

    int e = 16, f;
    f = (e++) + ++e;  /*  我们可以这样理解该语句执行细节:
                        步骤1、e=e+1=16+1=17(因为这个表达式里面,++e的优先级最高,要先算它);
                        步骤2、f=17+17=34;   步骤3、e=e+1=17+1=18;   */
    printf("\n  e = 16 , f未赋值,若 f = e++ + ++e,则有e = %d,f = %d  \n\n", e ,f);

    int j = 16, k;
    k = ++j + j++;  /*  我们可以这样理解该语句执行细节:步骤1、j=j+1=16+1=17;
                    步骤2、k=17+17=34,步骤3、j=j+1=17+1=18;    */
    printf("\n  j = 16, k未赋值,若 k = ++j+ j++,则有j = %d ,k = %d  \n\n", j , k);

    int m = 20, n;
    n = 1 + (m++);   //我们可以这样理解该语句执行细节:步骤1、n=1+m=1+20=21;步骤2、m=m+1=20+1=21;
    printf("\n  m = 20, n未赋值,若 n = 1 + m++,则有m = %d , n = %d  \n\n", m, n);

    int p = 50, q;
    q = 1 + ++p;   //我们可以这样理解该语句执行细节:步骤1、p=p+1=50+1=51;步骤2、q=q+1=51+1=52;
    printf("\n  p = 50, q未赋值,若q = 1 + ++p,则有p = %d , q = %d  \n\n", p, q);

    system("pause");
    return 0;
}/* 通过上述程序语句,我们可以这样理解:1、 含有++i的表达式,按照程序优先级(具体参见相关资料,一般先算i=i+1;
    2、含有i++的表达式,i=i+1的优先级排在最后(哪怕是(i++)这种形式),是表达式语句最后执行的一个步骤
      (在VS2017编译是这样,在codeblocks不是)
    3、引申到for( ;判定语句;i++)和( ;判定语句;++i)的情况,这两种形式效果是一样的。因为无论是i++,还是++i,
       它都是一个表达式,在这个表达式语句执行完之前,是不会执行判定语句的。也就是执行完i=i+1后(无论是i++,还是++i),
       再将i代入判定语句(在VS2017和codeblocks都同样结果)  */
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int i,j;
    for (i=1; i <= 10; i++)
        printf("%d ", i);
    printf("\n  i=%d  \n", i);

    for (j = 1; j <= 10; j++)
        printf("%d ", j);
    printf("\n  j=%d  \n", j);
    system("pause");
    return 0;
}
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int i,j,x=1,y=1;
    for (i = 1; i <= 10; i++)
    {
        printf("x=%d \n", x);
        x++;
    }
    printf("\n  i=%d  \n\n", i);

    for (j = 1; j <= 10; j++)
    {
        printf("y=%d \n", y);
        ++y;
    }
    printf("\n  j=%d  \n", j);

    system("pause");
    return 0;
}

原文地址:https://www.cnblogs.com/GoldCrop/p/10824676.html

时间: 2024-10-12 19:17:55

i++和++i的区别及在for()循环语句中的应用细节的相关文章

循环语句中break 与 continue的区别

循环语句中break 与 continue的区别 总结: 1 break; while循环break是用于永久终止循环.即不执行本次循环中break后面的语句,直接跳出循环. 2continue; while循环continue是用于终止本次循环.即本次循环中continue后面的代码不执行,进行下一次循环的入口判断. #include<stdio.h> //break; int main() { int i = 0; while (i <= 10) { if (i == 5) brea

Java语言----三种循环语句的区别

------- android培训.java培训.期待与您交流! ---------- 第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } eg: 1 class Dome_For2{ 2 public static void main(String[] args) { 3 //System.out.println("Hello World!"); 4 //求1-10的偶数的和 5 int sum = 0; 6 fo

include包含头文件的语句中,双引号和尖括号的区别

include包含头文件的语句中,双引号和尖括号的区别 #include <>格式:引用标准库头文件,编译器从标准库目录开始搜索 #incluce ""格式:引用非标准库的头文件,编译器从用户的工作目录开始搜索 预处理器发现 #include 指令后,就会寻找后跟的文件名并把这个文件的内容包含到当前文件中.被包含文件中的文本将替换源代码文件中的#include指令,就像你把被包含文件中的全部内容键入到源文件中的这个位置一样. #include 指令有两种使用形式 #incl

LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别【转】

在写LINQ语句的时候,往往会看到.AsEnumerable() 和 .AsQueryable() .例如: string strcon ="Data Source=.\\SQLEXPRESS;Initial Catalog=Db_Example;Persist Security Info=True;User ID=sa;Password=sa";SqlConnection con =new SqlConnection(strcon);con.Open();string strsql

SQL语句中SUM与COUNT的区别

SUM是对符合条件的记录的数值列求和 COUNT 是对查询中符合条件的结果(或记录)的个数 例如: 表fruit id     name    price 1     apple     3.00 2     pear       4.00 select count(price) from fruit; ----执行之后结果为:2  (表示有2条记录) select  sum(price) from fruit;---执行之后结果为:7:00(表示各记录price字段之和为7.00) SQL语句

解析sql语句中left_join、inner_join中的on与where的区别

以下是对在sql语句中left_join.inner_join中的on与where的区别进行了详细的分析介绍,需要的朋友可以参考下 table a(id, type):id     type ----------------------------------1      1         2      1          3      2          table b(id, class):id    class ---------------------------------1  

SQL语句中count(1)count(*)count(字段)用法的区别

SQL语句中count(1)count(*)count(字段)用法的区别 在SQL语句中count函数是最常用的函数之一,count函数是用来统计表中记录数的一个函数, 一. count(1)和count(*)的区别 1. count(1)和count(*)的作用: 都是检索表中所有记录行的数目,不论其是否包含null值. 2. 区别:但是count(1)比count(*)效率更高 二 . count(字段)与count(1)和count(*)的区别 count(字段)的作用是检索表中的这个字段

Callable与Runnable的区别及其在JDK源码中的应用

最近在学习java多线程方面的东西,在此希望把自己学到的东西做做总结,要想搞清楚实现原理,源码是最好的老师,因此这篇我打算从实践+源码角度来进行分析以下几个问题: (1):Callable与Runnable的区别: (2):Callable与Runnable的使用,并且通过Future对象获取Callable的返回值: (3):JDK源码中对于Callable与Runnable是怎么使用的呢? 首先我们来看看源码中是怎么解释Callable和Runnable区别的: Callable与Runna

continue语句在for语句和while语句中的区别

while语句的形式: while( expression ) statement for语句的形式: for( expression1; expression2;expression3 )   // ( 初始化,条件,调整 ) statement break语句在for语句和while语句中的作用都是:永久终止其循环:而continue语句在两个语句中存在区别: 在for语句中,continue语句跳过循环体的剩余部分,直接回到调整部分: 在while语句中,调整部分是循环体的一部分,所以co