Swiftの勉強中にvar cellSize: CGFloat! という記述が出てきました。

swiftではOptional型以外は値としてnilを取れないので、Optionalに変換してるのだと思うのですが 別の場所ではOptional型の宣言には?をつけると出ていました。

試しにCGFloat!CGFloat?に置き換えてみたのですが、すぐにはエラーがでないようです。

この2つの表現にはどのような違いがあるのでしょうか?