问题描述
代码:
SELECT dbo.UDF_STRIP_HTML(some_column)
FROM some_table
输出:
#include <stdio.h>
int main()
{
int a=10;
static int b=2;
a = a+1;
b = b-1;
printf("%d \n",a);
printf("%d \n",b);
printf("%d \n","%d",a,b);
return 0;
}
我的问题: b 是一个静态变量,那么它的值在使用的第二个 printf() 函数中是如何改变的呢?第三个 printf() 函数有意义,因为它给出了一个错误。
解决方法
对于程序开头的初学者,您更改了静态变量 b
b = b-1;
关键字 static
没有关键字 const
的含义。
另一方面,在 printf
的这个调用中,显然有一个错字
printf("%d \n","%d",a,b);
^^^^
实际上,您正在尝试将指向字符串文字 "%d"
的指针作为整数输出。
即该函数有四个参数,第一个参数中只有一个转换说明符。
编译器可能会发出警告,指出 printf
的调用中有多余的参数。
你可以这样写:)
printf("%d \n" "%d",b);
在这种情况下,输出将是
11
1
因为上面的调用等价于
printf("%d \n%d",b);
但你的意思是
printf("%d %d\n",b);
所以这两个静态变量都不会自发改变。
,export const TagItem = styled.View`
position: absolute;
top: ${(props) => `${props.locationY}px`};
left: ${(props) => `${props.locationX}px`};
justify-content: center;
`;
签名是
printf
第一个参数是格式字符串,后面的所有参数都是格式说明符(以 % 开头的子序列)。
int printf ( const char * format,... );
上面的代码调用了未定义的行为,因为第一个格式说明符 printf("%d \n",b);
用于表示十进制整数值,而与此说明符匹配的参数是 %d
",其类型为 { {1}}。
您应该将其更改为:
"%d