我对以下代码感到困惑:
#include <iostream>
int i = 1;
int main()
{
int i = i;
std::cout << "i: " << i << "\n";
return 0;
}
输出
i: 0
我原本期望运行上面的代码会打印1
。有人可以解释这种奇怪行为的原因吗?
答案 0 :(得分:62)
您正在初始化i
。 i
中的int i = i;
和0
都是内部的而不是外部的i
。这是未定义的行为,您可能会遇到i
或任何。
如果您想将外部#include <iostream>
int i = 1;
int main()
{
int i = ::i;
std::cout << "i: " << i << "\n";
return 0;
}
指定给内部org.springframework.dao.InvalidDataAccessApiUsageException: OracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on
[org.apache.tomcat.dbcp.dbcp.PoolableConnection]: specify a corresponding NativeJdbcExtractor; nested exception is java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.PoolableConnection cannot be cast to oracle.jdbc.OracleConnection
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.createLob(OracleLobHandler.java:547) ~[spring-jdbc-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.setClobAsString(OracleLobHandler.java:447)
,这是正确的方法。
lobHandler
BTW,您应该仔细阅读所有编译器警告。如果你这样做,你可以自己看到问题:
警告&#39;我&#39;在此函数中使用未初始化