// 赋值运算符.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
int main1(int argc, char* argv[])
{
int a=5;
a=3;
int b;
int c;
printf("\n%d",a=4);
printf("\n%d",a=b=c=4); //赋值运算符的结合性从右到左
printf("\n%d,%d,%d\n",a,b,c);
return 0;
}
void main2()
{
//整数10在寄存器中所以无法赋值的不能当作左值
int a=10;
//10=a ;//能当做左值一般在内存中有实体
//'=' : left operand must be l-value 报错赋值号左边必须左值
int b=a;//左值一定可以当作右值 而右值不一定能当作左值 因为右值可能在寄存器
//a+b=10; //a+b在寄存器中运算所以不能当作左值
}
void main3()
{
int a=10;
a+=3;//a=a+3;
//a+ =3; += *= /= %= 和位运算都不能间隔空格
printf("\n%d",a);
}
void main4()
{
int a=10.998; //赋值号还可以进行类型的自动转换
printf("\n%d",a);
}
void main()
{
int a=12;
a+=a-=a*a; //a=(a=a-(a*a))+a
printf("%d\n",a); //复合赋值运算符是从右到左进行计算
int b=2;
b%=4-1;//2%3=2
b+=b*=b-=b*=3;//从右到左运算 结果为0;
printf("%d\n",b);
}
//
#include "stdafx.h"
#include <stdio.h>
int main1(int argc, char* argv[])
{
int a=5;
a=3;
int b;
int c;
printf("\n%d",a=4);
printf("\n%d",a=b=c=4); //赋值运算符的结合性从右到左
printf("\n%d,%d,%d\n",a,b,c);
return 0;
}
void main2()
{
//整数10在寄存器中所以无法赋值的不能当作左值
int a=10;
//10=a ;//能当做左值一般在内存中有实体
//'=' : left operand must be l-value 报错赋值号左边必须左值
int b=a;//左值一定可以当作右值 而右值不一定能当作左值 因为右值可能在寄存器
//a+b=10; //a+b在寄存器中运算所以不能当作左值
}
void main3()
{
int a=10;
a+=3;//a=a+3;
//a+ =3; += *= /= %= 和位运算都不能间隔空格
printf("\n%d",a);
}
void main4()
{
int a=10.998; //赋值号还可以进行类型的自动转换
printf("\n%d",a);
}
void main()
{
int a=12;
a+=a-=a*a; //a=(a=a-(a*a))+a
printf("%d\n",a); //复合赋值运算符是从右到左进行计算
int b=2;
b%=4-1;//2%3=2
b+=b*=b-=b*=3;//从右到左运算 结果为0;
printf("%d\n",b);
}