考虑以下Fortran程序:
program test
character(len=:), allocatable :: str
allocate(character(3) :: str)
print *, len(str)
str = '12345'
print *, len(str)
end program
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到了预期的结果:
3
5
Run Code Online (Sandbox Code Playgroud)
也就是说,当str设置为'12345'时,字符串的大小从3调整为5.相反,如果我使用动态字符串数组,则不然.例:
program test
character(len=:), allocatable :: str(:)
allocate(character(3) :: str(2))
print *, len(str(1)), len(str(2))
str(1) = '12345'
print *, len(str(1)), len(str(2))
end program
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到:
3 3
3 3
Run Code Online (Sandbox Code Playgroud)
所以str(1)的集合没有改变字符串的长度.我使用ifort 16.0.2和gfortran 5.3.1获得了相同的行为.我的问题是这种行为是否与最新的Fortran标准一致,或者这是编译器中的一个错误?
我正在使用列表包,在列表中设置字体大小的命令是:
\lstset{basicstyle = \small}
Run Code Online (Sandbox Code Playgroud)
我想修改它以使用介于 \small 和 \normalsize 之间的字体大小。像这样的东西不起作用:
\lstset{basicstyle = 0.5\small+0.5\normalsize}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以根据需要设置字体大小吗?
问题:Linux 下环境变量 PWD 的定义是否始终独立于命令 shell(忽略非命令 shell)?换句话说,像“ls $PWD”这样的命令总是会运行吗?
对于我的生活,我无法找到用于将typedef转换为C++语句的规则的良好解释.我理解的简单案例.但请考虑丹尼卡勒夫的这个:
typedef char * pstr;
int mystrcmp(const pstr, const pstr); //wrong!
Run Code Online (Sandbox Code Playgroud)
Danny Kalev然后写道:
序列const pstr实际上意味着char*const(一个指向char的const指针); 不是const char*(指向const char的指针.
我找不到任何规则来解释为什么"const pstr"会被转换为"char*const".
谢谢你的帮助.