Actually yes, this does in fact drain the cell twice. You're calling if(!(C.use(hitcost)). This runs use() which for reference is

// use power from a cell
/obj/item/weapon/cell/proc/use(var/amount)
	if(rigged && amount > 0)
		explode()
		return 0

	if(charge < amount)	return 0
	charge = (charge - amount)
	return 1

Let's assume charge > hitcost (ie the cell has enough power), so charge is decreased by hitcost and returns 1, which violates the if check and continues on. The next thing is another use(hitcost), so charge is once again decreased by hitcost.