a++,++a,a+1三者的区别

本文详细解释了C++中a++、++a及a+1三种运算符的区别,重点介绍了它们如何作用于变量以及是否可以应用于常量。此外,还探讨了当a作为地址时这些运算符的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a++:只改变a的值

++a:既改变a的值,又改变整体的值

a+1:既改变a的值,又改变整体的值

区别:前二者中的a只能为变量,而第三者则既可为变量,又可为常量,特别当a代表地址时

``` #include<iostream> #include<queue> #include<vector> using namespace std; int n,m; int g[110][110]; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) { g[i][j]=0; } else { g[i][j]=0x3f3f3f; } } } for(int i=1;i<=m;i++) { int a,b,c; cin>>a>>b>>c; g[a][b]=c; g[b][a]=c; } for(int k = 1; k <= n; k ++) for(int i = 1; i <= n; i ++) for(int j = 1; j <= n; j ++) g[i][j] = min(g[i][j], g[i][k] + g[k][j]); int cnt,ans=0x3f3f3f; for(int i=1;i<n;i++) { for(int j=i+1;j<=n;j++) { cnt=0; for(int a=1;a<n;a++) { for(int b=a+1;b<=n;b++) { if(a!=i||b!=j) { cnt+=min(g[a][b],min(g[a][i]+g[j][b],g[a][j]+g[i][b])); } } } ans=min(ans,cnt); } } cout<<ans; }```传智专修学院里有 n 栋教学楼,有 m 条双向通行道路连接这些教学楼,不存在重边自环。每条道路都有一定的长度,而且所有教学楼之间都可以直接或者间接的通过道路到达。我们可以很容易的求出这些教学楼之间的最短路。 为了使交通更为顺畅,校方决定在两个教学楼里增设一对传送门。传送门可以将这对教学楼的距离直接缩短为 0。利用传送门,某些教学楼之间的最短路的距离就变短了。 由于预算有限,学校里只能安装一对传送门。但是校长希望尽可能方便学生,使任意两点之间的最短路长度的总最小。当然啦,从 x 教学楼到 y 教学楼的长度从 y 教学楼到 x 教学楼的长度只需要统计一次就可以了。 输入格式 输入第 1 行两个正整数 n,m(n≤100,m≤ 2 1 ​ n(n−1)),代表教学楼道路数量。 接下来 m 行,每行三个正整数 x i ​ ,y i ​ ,w i ​ (0<w i ​ ≤10 4 ),表示在教学楼 x i ​ y i ​ 之间,有一条长度为 w i ​ 的道路。 输出格式 输出一行,在最优方案下的任意点对的最短道路之。 输入输出样例 输入 #1复制 4 5 1 2 3 1 3 6 2 3 4 2 4 7 3 4 2 输出 #1复制 14
03-11
设有说明语句:char a[]=”It is mine”;char *p=”It is mine”;则以下不正确的叙述是 . A)a+1表示的是字符t的地址 B)p指向另外的字符串时,字符串的长度不受限制 C)p变量中存放的地址值可以改变 D)a中只能存放10个字符 设有程序段:char s[10]=”china”; char *p ; p=s ;则下面叙述正确的是 。 A)sp完全相同 B)数组s中的内容指针变量p中的内容相等 C)s数组长度p所指向的字符串长度相等 D)*p与s[0]相等 下面判断正确的是 。 A)char *a=”china”; 等价于 char *a; *a=”china” ; B)char str[10]={“china”}; 等价于 char str[10]; str[ ]={“china”} ; C)char *s=”china”; 等价于 char *s; s=”china” ; D)char c[4]=”abc”,d[4]=”abc”; 等价于 char c[4]=d[4]=”abc” ; 若已定义char s[10];则在下面表达式中不表示s[1]的地址是 。 A)s+1 B)s++ C)&s[0]+1 D)&s[1] 若有定义:int a[5],*p=a;则对a数组元素的正确引用是 。 A)*&a[5] B)a+2 C)*(p+5) D)*(a+2) 若有定义:int a[5];则a数组中首元素的地址可以表示为 。 A)&a B)a+1 C)a D)&a[1] 以下正确的说明语句是 。 A)int *b[]={1,3,5,7,9} ; B)int a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]}; C)int a[]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]}; D)int a[3][4],(*num)[4] ; num[1]=&a[1][3]; 若有定义:int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是 。 A)x[3] B)p1=x+3,*p1++ C)p1=x+2,*(p1++) D)p1=x+2,*++p1 若有定义int a[4][6];则能正确表示a数组中任一元素a[i][j](i,j均在有效范围内)地址的表达式 。 A)&a[0][0]+6*i+j B)&a[0][0]+4*j+i C)&a[0][0]+4*i+j D)&a[0][0]+6*j+i 下面程序的运行结果是 。 main ( ) { int x[5]={2,4,6,8,10}, *p, **pp ; p=x , pp = &p ; printf(“%d”,*(p++)); printf(“%3d”,**pp); } A)4 4 B)2 4 C)2 2 D)4 6 const char *p、char const *p、char *const p 有什么区别?(北京信果科技) 以下为linux下的32位C程序 (飞音时代)   char str[] = "Hello"; char *p = str; int n = 10; 请计算: (1) sizeof(str) = ________ (2) sizeof(p) = ________ (3) sizeof(n) = ________
最新发布
04-01
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxa1334

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值