fortran里的数组赋值

为什么real::A(3,2)=(/1,2,3,4,5,6/)总是出现问题?辅导书上不都是这么赋值的吗。版本是fortran95主要是2维或者2维以上的数组... 为什么real::A(3,2)=(/1,2,3,4,5,6/)总是出现问题?辅导书上不都是这么赋值的吗。版本是fortran95
主要是2维或者2维以上的数组
展开
 我来答
机械百事通happy
2020-02-25 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:965万
展开全部
错误信息的含义是数组赋值的语句里所有元素必须是同一数据类型
变量a是real(8),虽然程序中赋值用的是整形的(/1,2,3/),fortran会自动将其转换成real(8)。
c=(/1,a(2:3)/)这句里1是整形,后面的a(2:3)是real(8),数据类型不同,所以报错了。
可以改成
c=(/1.0_8,a(2:3)/)
天河流纹石
推荐于2017-09-03 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7623
采纳率:76%
帮助的人:6684万
展开全部
你的写法是不标准的。我不知道你使用的什么教科书?

可能个别编译器会允许这样写,但不标准。

标准的写法是 :
real :: A(3,2)= reshape( (/1,2,3,4,5,6/) , (/3,2/) )

它表示把 123456 数组重新划分外形(reshape)为 3*2 的数组,并赋值给 a 数组。
追问
用的是彭国伦(fortran95程序设计),我也试过这样写,但是有时候会提示reshape有错误,不过有时候可以。下次遇到再请教,多谢了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JF财肯68
2014-07-11 · TA获得超过140个赞
知道答主
回答量:158
采纳率:100%
帮助的人:71万
展开全部
解决方法很多!第一,V(5000)=0的意思是,第5000个元素为0,而前4999个没有进行赋值。如果写为:V(1:5000)=0,这就表示5000个全部为0了。第二,V(0:5000)=1,2,3这样写是非法的。第三,V(5000)也可以写为V(1:5000)表示V数组里有5000个数。如果省略了冒号,则默认从1开始如果写成V(0:5000)则表示V数组有5001个数。
请采纳答案,支持我一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式